Wrohi

[JAVA] Random(), gauti duoble nuo 0 iki 100.

Recommended Posts

Sveiki, norėčiau sužinoti ar įmanoma gauti double (0-100) su random(). 

    private static int drawNumber() {
    	int rand = new Random().nextInt(101);
    
    	return rand;
        
    }
}

Šiuo kodų gaunu random int nuo 0 iki 100, bet pakeitus 'nextInt' į 'nextDouble', man neleidžia nustatyti range'o ir leidžia paleisti tik 0-1 range'e. Ar įmanoma gauti double random nuo 0-100 ar tik 0-1 ?
Dėkui iš anksto.

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

Random random = new Random();
double rand = random.nextInt(101) + random.nextDouble();

jeigu pridėsi prie reikšmės kurią gausi random nuo 0-100 double nuo 0 iki 1 teoriškai gausi random double nuo 0 iki 100

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį
37 minutes prieš, Tomas parašė:

arba

double rand = new Random().nextDouble()*100;

 

Supratau, o yra kažkokia priežastys kodėl draudžiama tiesiog įrašyti tarp skliaustu kaip su nextInt(numb) ?

41 minutes prieš, Zero Two parašė:
Random random = new Random();
double rand = random.nextInt(101) + random.nextDouble();

jeigu pridėsi prie reikšmės kurią gausi random nuo 0-100 double nuo 0 iki 1 teoriškai gausi random double nuo 0 iki 100

 

Padariau užduoti kurios esme surasti nežinoma skaičiu, programa skaičiuoja spėjimu kieki ir panašiai. Galbūt turit pasiūlymų ar įmanoma dar labiau sutrumpinti šia programą ? :D Mėgstu, kad viskas būtų kuo trumpiau.
Kodas:
 

import java.util.Random;
import java.util.Scanner;

public class Metodai {

    public static void main(String[] args) {
        Scanner player = new Scanner(System.in);
        int numberDrawn = drawNumber(), guessCount = 0;

       while (true) {
    	   System.out.println("Guess a number:");
    	   int guess = player.nextInt();
    	   
    	   guessCount++;
    	   
         //cheat
    	   if (guess == 741) {
    		   System.out.println("Correct Number Is: " + numberDrawn);
    		   guessCount = 0;
    	   }
    	   
    	   if (guess == numberDrawn) {
    		   System.out.println("Congratulations, your guess is correct!");
    		   break;
    	   }
    	   
    	   else if (guess < numberDrawn) {
    		   System.out.println("The number is greater, guesses made: " + guessCount);
    	   }
    	   
    	   else if (guess > numberDrawn) {
    		   System.out.println("The number is lesser, guesses made: " + guessCount);
    	   }
       }
        
       
       player.close();
    }


    public static int drawNumber() {
    
    	return new Random().nextInt(101);
        
    }
}

 

Redaguota , nario Wrohi

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį
11 minutes prieš, Wrohi parašė:

Supratau, o yra kažkokia priežastys kodėl draudžiama tiesiog įrašyti tarp skliaustu kaip su nextInt(numb) ?

 

Padariau užduoti kurios esme surasti nežinoma skaičiu, programa skaičiuoja spėjimu kieki ir panašiai. Galbūt turit pasiūlymų ar įmanoma dar labiau sutrumpinti šia programą ? :D Mėgstu, kad viskas būtų kuo trumpiau.
Kodas:
 

import java.util.Random;
import java.util.Scanner;

public class Metodai {

    public static void main(String[] args) {
        Scanner player = new Scanner(System.in);
        int numberDrawn = drawNumber(), guessCount = 0;

       while (true) {
    	   System.out.println("Guess a number:");
    	   int guess = player.nextInt();
    	   
    	   guessCount++;
    	   
         //cheat
    	   if (guess == 741) {
    		   System.out.println("Correct Number Is: " + numberDrawn);
    		   guessCount = 0;
    	   }
    	   
    	   if (guess == numberDrawn) {
    		   System.out.println("Congratulations, your guess is correct!");
    		   break;
    	   }
    	   
    	   else if (guess < numberDrawn) {
    		   System.out.println("The number is greater, guesses made: " + guessCount);
    	   }
    	   
    	   else if (guess > numberDrawn) {
    		   System.out.println("The number is lesser, guesses made: " + guessCount);
    	   }
       }
        
       
       player.close();
    }


    public static int drawNumber() {
    
    	return new Random().nextInt(101);
        
    }
}

 

double turi skaičius po kablelio, pagal tai kaip jie įrašomi į atmintį (skirtingai nei int) tikriausiai ir kelia nesklandumų

 

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

@Wrohi

Nesklandumų double įrašymas į atmintį nekelia.

Kadangi tai yra papraščiausias būdas apskaičiuoti pseudo-random double skaičių.
AFAIK, Java pirmiausia apskaičiuoja long int. Formulė turėtų atrodyt maždaug taip:

random int(RAND_MAX)
————————————————————
     RAND_MAX

Tai ir duoda skaičių nuo 0 iki 1. Tas taikoma ir kitose kalbose (galiu ir klysti).

Redaguota , nario Tomas

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį
public class Metodai {

	static final int CHEAT_CODE = 741;
	static final int MAX_NUMBER_GENERATED = 101;
	static final int numberDrawn = new Random().nextInt(MAX_NUMBER_GENERATED);
	
    public static void main(String[] args) {
        Scanner player = new Scanner(System.in);
        int guessCount = 0;
        while (true) {
        	System.out.println("Guess a number:");
        	int guess = player.nextInt();
        	guessCount++;
        	if(guess == numberDrawn) {
        		System.out.println("Congratulations, your guess is correct!");
        		break;
        	}
        	else if (guess == CHEAT_CODE) {
        		System.out.println("Correct Number Is: " + numberDrawn);
        		guessCount = 0;
        	}
        	else if (guess < numberDrawn)
        		System.out.println("The number is greater, guesses made: " + guessCount);
        		
        	else if (guess > numberDrawn)
        		System.out.println("The number is lesser, guesses made: " + guessCount);
        }
        player.close();
    }
}

Pabandžiau sutrumpint :|

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti Å¡ioje temoje...

×   Ä®klijuotas tekstas turi teksto formatavimą.   PaÅ¡alinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiÅ¡kai įterpta.   Ä®terpti nuorodą paprastai

×   JÅ«sų ankstesnis praneÅ¡imas buvo atkurtas.   IÅ¡valyti redaktorių

×   JÅ«s negalite įkelti nuotraukas tiesiogiai.Ä®kelkite arba įdėkite nuotraukas iÅ¡ URL.


  • Å iame puslapyje narÅ¡o:   0 nariai

    Nėra registruotų narių peržiūrinčių šį forumą.