Archief - [PROG] [JAVA] random() vraag

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

MAXXUR

Legacy Member
Hoi,
hoewel het mij vrij simpel lijkt te vinden, kan ik toch nergens een correcte definitie vinden:
Math.random() creëert een getal tussen 0,0 en 1,0
is dit nu met 0 en 1 er mogelijk bij? of echt tussen?

MilM

Legacy Member
De klasse Random kan ook handig zijn voor het genereren van getallen.

Ice

Legacy Member
MAXXUR zei:
Hoi,
hoewel het mij vrij simpel lijkt te vinden, kan ik toch nergens een correcte definitie vinden:
Math.random() creëert een getal tussen 0,0 en 1,0
is dit nu met 0 en 1 er mogelijk bij? of echt tussen?

Dude, als je een vraag hebt over Java is de EERSTE PLAATS waar ge gaat zien de API.
bv.
De eerste lijn uitleg:
JavaApi zei:
Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0

Volgende keer oogjes opendoen

Vich

Legacy Member
Ice zei:
Dude, als je een vraag hebt over Java is de EERSTE PLAATS waar ge gaat zien de API.
bv.
De eerste lijn uitleg:

Volgende keer oogjes opendoen

Je krijgt van mij 100% gelijk dat het niet topic-waardig is ... maar imo mag het wel wat vriendelijker gebracht worden ...

pieta

Legacy Member
MilM zei:
De klasse Random kan ook handig zijn voor het genereren van getallen.

²

voor hier morgen weer een topic staat:p

Random rand = new Random();
...
rand.nextInt(10);

is wel van nul tot n-1 en nie n

Qrea

Legacy Member
Is het niet gemakkelijker om gewoon boven- en ondergrens aan te geven?

Random rand = new random();

rand.nextInt(1, 11)

Een random getal van 1, tot en met 10 dus [1, 10]

Als het in JAVA toch ongeveer hetzelfde is als in VB.Net.

Vich

Legacy Member
Qrea zei:
Is het niet gemakkelijker om gewoon boven- en ondergrens aan te geven?

Random rand = new random();

rand.nextInt(1, 11)

Een random getal van 1, tot en met 10 dus [1, 10]

Als het in JAVA toch ongeveer hetzelfde is als in VB.Net.

Makkelijker wel ja, maar niets belet je om er een wrapper voor te schrijven.

De reden waarom het niet gedaan wordt is vermoedelijk omdat er met een modulus gewerkt om een random getal te verkrijgen.
Een random getal is intern altijd 32 of 64 bits groot. Door "random_int32 mod X" te doen krijg je dus een random int in de range van 0 tot X-1.
Dit is gewoon sneller dan "random_int32 mod (X+1)" te hardcoden in die random generator functie, omdat er in dit geval een operatie bijkomt die niet altijd nodig is.
Daarom dat het volgens mij zo geimplementeerd is.

C/C++ heeft zelfs enkel een rand() die een random int genereert, daar moet je dus zelf een wrapper met modulus oid gaan implementeren.

killgore

Legacy Member
Wel opletten met die Random klasse: telkens je een nieuwe klasse Random maakt wordt een nieuwe seed gekozen.

NORMAAL zal die altijd iets anders zijn, maar ga daar niet van uit, als die in een lus zit of zo, maak gebruik van de "next" functie en niet van een nieuw object.

Buiten de extra overhead heb je bij enkele talen nog eens de kans dat deze staat afgesteld op een klok binnen je cpu die meestal pas om de 10-15 msec zal updaten. Als jij binnen die tijdspanne een aantal random klassen initialiseert zullen die allemaal dezelfde willekeurige waarde hebben :p.

N`Kr1pt

Legacy Member
killgore zei:
Wel opletten met die Random klasse: telkens je een nieuwe klasse Random maakt wordt een nieuwe seed gekozen.

ja best wel he
zoveel commotie voor wat pseudorandom getallen

killgore

Legacy Member
N`Kr1pt zei:
ja best wel he
zoveel commotie voor wat pseudorandom getallen

negeer anders de rest van men post ipv zo sarcastisch mogelijk te antwoorden :x.

Het is een fout die ik nu eenmaal al enkele keren bij beginners ben tegengekomen :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan