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?

Weet jij het antwoord?

/2500

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.

Bronnen:
http://en.wikipedia.org/wiki/Maximum_lengt...

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

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.

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)

Voor meer random uitleg zie ook onderstaande link (engels), handig voor als je opeens een willekeurig getal nodig hebt:

Stel zelf een vraag

Ben je op zoek naar het antwoord die ene vraag die je misschien al tijden achtervolgt?

/100