Peršokti į turinį
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

  • Teigiamai 1

Dalintis šį pranešimą


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


Parašė (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

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ų

 

  • Teigiamai 1

Dalintis šį pranešimą


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

Parašė (redaguota)

@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
  • Teigiamai 1

Dalintis šį pranešimą


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

Komentuoti gali tik prisijungę nariai

Jeigu turite paskyrą, prisijunkite

Sukurti paskyrą

Sukurkite paskyrą mūsų forume

Registruotis

Prisijungti

Turite paskyrą? Prisijunkite

Prisijungti dabar

  • Narių peržiūri šį forumą:   0 nariai

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


  • SuperGames programele
  • SuperGames programele


×