Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

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


Wrohi

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1270 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

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.

Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)
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
Nuoroda į komentarą
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ų

 

Nuoroda į komentarą
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
Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 3 savaičių...
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 :|

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 7 mėnesių...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1270 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

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ą.

Skelbimai


×
×
  • Sukurti naują...