Hét vraag- en antwoordplatform van Nederland

Hoe kan een computer nu toevallige getallen genereren?

In mn jeugdjaren programmeerde ik op een Commodore 64. Met de functie X = RND (Y), kon er een "willekeurige" X gegenereerd worden. Maar hoe doet een CPU zoiets? Het ding kan toch in conrete stappen rekenen met getallen die je aanbiedt? Of zit er een wiskundige functie achter?

Verwijderde gebruiker
14 jaar geleden
2.5K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Er zijn heel simpele toevalsgeneratoren. Ik had ooit een elektronische rekenmachine die continu aan het rekenen was:

    nieuwe T = frac(717,013 * (oude T))

T is het toevalsgetal, frac betekent dat je het deel achter de komma neemt. Dus frac(14,253) is 0,253.

Op het moment dat jij een toevalsgetal nodig had, gaf hij de T van dat moment.

Tegenwoordig wordt de tijd meegenomen in de berekeningen. Verder wordt bijvoorbeeld de tijd (in nanoseconden!) meegenomen tussen twee opeenvolgende toetsaanslagen, of tussen twee klikken met de muis. Die dingen zijn onvoorspelbaar, dus ze verbeteren de toevalligheid van de toevalsgenerator.

Een wiskundige uitleg van een maximumlengtegenerator vind je in de Bron. Zulke generatoren worden tegenwoordig vaak gebruikt als toevalsgenerator. Het nadeel van een maximumlengtegenerator is dat hij voorspelbaar is; precies om die reden worden de tijdsintervallen meegenomen die ik hiervoor heb genoemd. Ook worden meerdere verschillende maximumlengtegeneratoren met elkaar gecombineerd.

Echt professionele toevalsgeneratoren gebruiken natuurkundige processen die inherent toevallig zijn. Een bekende is het radioactief verval van een radioactieve stof. De momenten waarop een radioactief deeltje wordt uitgezonden, zijn fundamenteel onvoorspelbaar, en dus zuiver toevallig.
(Lees meer...)
Cryofiel
14 jaar geleden

Andere antwoorden (4)

Dat is een wiskundige formule, je kunt dat beïnvloeden door een zaadgetal in te voeren, met het zelfde zaadgetal krijg je elke keer hetzelfde antwoord... En dat zaadgetal wisselt steeds zodanig dat er toch een goed gemiddelde uitkomt... Maar het is een wiskundig algoritme...
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
Een goeie random generator maakt gebruik van de klok. Omdat de tijd in het algoritme gebruikt wordt krijg je niet steeds dezelfde getallen.

Toegevoegd na 2 minuten:
NB: Er zit ook een wiskundige formule achter. Die zorgt ervoor dat je (bij RND(Y) bijvoorbeeld) een trekking uit een homogene verdeling tussen 0 en 1 neemt. Je kunt vaak ook andere verdelingen kiezen in sommige programmatuur, zoals bijvoorbeeld een trekking uit een normale verdeling.
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
In theorie bestaan random getallen niet. Als het belangrijk is dan wordt er veel geld betaal voor hett genereren van bijna random getallen op bais van geruis uit de ruimte. Dit doen ze in het JPL in de USA

Voor het dagelijks leven zijn pseudo random getallen goed genoeg. Een seed heeft niet direct met random getalen te maken, maar is een eigenschap van de generator, waardoor je een reeks kan herhalen, wat natuurlijk zelden nodig en meestal verkeerd is

Toegevoegd na 13 minuten:
Je kunt gebruik maken van een de progtrammeeromgeving om een randomgetal te generenen met als seed de tijd van de computer clock. Welke methode je gebruikt hangt af van het doel van het randomgetal.

Ik gebruik een unieke kley generator voor MS SQL server en voor Oracle (16 lang) die nog nooit een double heeft gegenereerd in tientallen jaren:

result := IntToHex(Random($FFFFFFFF), 8) + IntToHex(Random($FFFFFFFF), 8)

(delphi omgeving)
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
Cryofiel
14 jaar geleden
Mag ik drie punten corrigeren? Ook in theorie bestaan willekeurige getallen. De tijdsduur tussen het detecteren van twee opeenvolgende deeltjes die uit een radioactief materiaal komen, is zowel praktisch als theoretisch volledig willekeurig. Een seed is geen eigenschap van de generator. Een generator genereert een reeks getallen die op het eerste gezicht willekeurig lijken. Een seed is het begingetal (vandaar de naam) voor de generator. Het kunnen herhalen van een reeks toevalsgetallen is in sommige gevallen extreem belangrijk. Een voorbeeld is het uitvoeren van een simulatie waarbij toevalsgetallen nodig zijn, en waarvan de resultaten gebruikt worden voor wetenschappelijk onderzoek. Wetenschappelijk onderzoek moet reproduceerbaar zijn, dus het is erg nuttig als je het onderzoek kunt herhalen met precies dezelfde semitoevalsgetallen.
Verwijderde gebruiker
14 jaar geleden
Drie keer yep maar met aantekeningen: 1. De verval tijd tussen twee deeltjes is inderdaad random, en die methode wordt ook gebruikt door het JPL, maar mensen kunnen absolute random getalen niet genereren. het zijn altijd pseudo random getalen 2. Simutatie is inderdaad een van de weinige sitaties waar herhaling van belang kan zijn, maar dan wel in de instelfase van de simulatie, dus voor het aanpassen van het model. 3. Er zijn pseudo random generators (PRNG) denkbaar die niet met een seed behoeven te werken, het is een eigenschap van de PRNG die je gebruikt cf maakt of al dan niet een seed noodzakelijk is. Het voorbeeld van jouw rekenmachine is een PRNG zonder seed. Dus ook niet herhaalbaar :-)).
Natuurlijk begint de functie bij 0 als jouw rekenmachine in elkaar wordt gezet, maar dat wil ik geen seed noemen. Ik gebruik zelf de Delphi randomgenerator die je moet starten met een seed. De cycle is 2^32. De documentatie geeft aan dat deze PRNG niet geschikt is voor encryptie. Het feit, dat van iedere commerciele PRNG bekend is wat de cycle is geeft al aan dat het om pseudo random getallen gaat.
Cryofiel
14 jaar geleden
1.  Klopt helemaal. 2.  Klopt ook. Tevens is herhaling van belang voor de reproductie van een opzienbarend resultaat door andere groepen. 3.  Ook goed, hoewel de meeste pseudotoevalsgeneratoren op dit moment maximumlengtegeneratoren zijn. Die hebben van nature een seed nodig. Je kunt je pseudotoevalsgenerator, of die nu bestaat uit één of meer maximumlengtegeneratoren of volgens een ander principe werkt, natuurlijk altijd mede voeden met de tijd tussen toetsaanslagen en muisklikken om hem onvoorspelbaarder te maken. Maar goed, ik geloof dat we het roerend eens zijn!
Voor meer random uitleg zie ook onderstaande link (engels), handig voor als je opeens een willekeurig getal nodig hebt:
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding