Hoe maak je een willekeurige generator
Geplaatst op februari 10, 2021 door adminHoe kan een willekeurige generator worden geïmplementeerd?
Ik heb het niet over het aanroepen van een taal mathRandom () methode, maar de implementatie van de routines die leiden tot het genereren van totaal willekeurige getallen.
Reacties
- I ‘ d durf te zeggen dat echte willekeur momenteel niet mogelijk is.
- @Dynamic Ik denk hetzelfde, maar ik heb altijd riep een willekeurige functie aan wanneer dat nodig was, maar ik heb ‘ geen idee van hoe een willekeurige methode moet worden geïmplementeerd.
- ” totaal willekeurig ” is een heel diep konijnenhol.
- @Dynamic: het is eigenlijk triviaal om een reeks te krijgen die niet te onderscheiden is van echt willekeurige gegevens, zolang je maar kijk naar de buitenwereld met hardware-ondersteuning. Atoom- en subatomaire fysica, (atoomverval, gebeurtenissen van het type foton die sensoren raakt) is (in de mate dat het f huidige wetenschapstheorie) echt willekeurig en gemakkelijk te meten. Thermodynamica op grote schaal is zo chaotisch dat we het als willekeurig kunnen beschouwen als we kijken naar het macrosysteem op de microschaal enz. Ruis van een digitale camerasensor is een goed voorbeeld …..
Antwoord
De sleutel voor een echt willekeurig getal is een willekeurige gegevensbron. Soms is dit informatie zoals vertragingen in toetsenbordgebeurtenissen of netwerkgebeurtenissen. Waar willekeurige gegevens van hoge kwaliteit gewenst zijn, kan dit radioactief verval zijn. SGI implementeerde lavarand die zijn zaad voor een generator van willekeurige getallen ontleende aan een gedigitaliseerde afbeelding van een lavalamp. Dit was voldoende om als een generator voor willekeurige getallen te worden beschouwd.
Buiten echt willekeurige gegevens kan men werken met een deterministisch maar chaotisch systeem. Bijvoorbeeld de mersenne twister . In deze situaties zaait men de generator met een nummer en voert het vervolgens uit om pseudo-willekeurige getallen te krijgen. Deze zijn voldoende voor games en dergelijke, waarbij het niet kritisch is of iemand het kiemgetal (en het volgende nummer in de reeks) kan bepalen.
Overweeg om patent 5,732,138 en http://www.lavarnd.org/ voor de implementatiedetails voor het maken van een getal.
Reacties
- +1 Ik zou verschillende gegevensbronnen willen overwegen, zoals weersmetingen voor je zaad. wiki.cdyne .com /? title = CDYNE_Weather
- @ emeraldcode.com de uitdaging met weermetingen is dat ze niet helemaal willekeurig zijn. Er is een heel veld over het voorspellen van het weer. De temperatuur stijgt dan meestal in de loop van een dag. De winter is kouder dan de zomer. Het hotbits-systeem gebruikt de willekeur van de timing van twee vervalgebeurtenissen die onvoorspelbaar zijn (meet de tijd van gebeurtenis 1 tot gebeurtenis 2 en de tijd van gebeurtenis 3 tot gebeurtenis 4 – indien 1 : 2 == 3: 4, gooi de gegevens weg. Als 1: 2 3: 4, de willekeurige bit is 0. Als 1: 2 > 3: 4, is de willekeurige bit 1.
- Ik heb het ‘ m over windsnelheid, barometrische druk, temperatuur, vochtigheid, enz. Je kunt een steekproef nemen van metingen en het moeilijk vinden om te argumenteren tegen willekeur in dat opzicht. Bovendien is de temperatuur alleen genomen met voldoende nauwkeurigheid erg willekeurig.
Antwoord
Wat voor soort willekeurig heb je het? about?
Er zijn twee belangrijke eigenschappen die definiëren willekeurig in wiskundige zin: de eerste is onvoorspelbaarheid en de tweede is uniforme distributie .
Als je het hebt over Ten eerste is het over het algemeen bijna onmogelijk om het volledig binnen software te genereren (en om het correct te doen). Er zijn enkele manieren, zoals het verzamelen van entropie van menselijke interface-apparaten, bijv. /dev/random
in Linux, maar we genereren een vrij laag niveau van entropie om nuttig te zijn. Anderen hebben al enkele hardware-implementaties genoemd. Ze hebben allemaal wortels diep in de fysica-theorie (zoals onze overtuiging dat het precieze moment waarop een foton een detector raakt, echt willekeurig is). Hiervoor zijn enkele software-algoritmen beschikbaar, zoals Blum-Blum-Shub . In het algemeen “schrijf geen PRNG als u onvoorspelbaarheid nodig heeft, maar gebruik een bestaande . Dit geldt vooral voor crypto.
De andere belangrijke eigenschap van willekeurige functies is eigenlijk vrij eenvoudig te vervullen. Er zijn veel voorbeelden hiervan, zoals de RNG achter RC4 , Linear Feedback Shift Registers (dit werd feitelijk gebruikt ook voor crypto, ooit, maar werd onvoldoende veilig bevonden), enz.Zelfs de standaard C-bibliotheek rand()
zal waarschijnlijk prima werken voor dit doel.
Het belangrijkste: zorg ervoor dat u weet welke van de twee eigenschappen van fundamenteel belang is voor uw behoefte. Onvoorspelbare PRNGs zijn ook uniform verdeeld, maar andersom is niet waar. Als je de willekeurigheid binnen een of andere “engine” (zoals een game-engine) blootlegt, zorg er dan voor dat mensen het systeem niet kunnen gamen, want het zal je misschien verbazen hoe gemakkelijk dat eigenlijk is. CSS (het dvd-versleutelingsalgoritme) gebruikte bijvoorbeeld 2 LSFRs voor cryptografiedoeleinden en werd vrij eenvoudig verbroken.
Antwoord
Eerst , kunt u geen echt willekeurige getallen genereren in software. Er zijn een heleboel verschillende algoritmen waarmee u pseudo-willekeurige getallen kunt genereren. Afhankelijk van waarom u pseudo-willekeurige getallen nodig heeft (als u ze bijvoorbeeld gebruikt in cryptografie, zijn de vereisten veel anders), zou je over het algemeen zoiets als de generator voor willekeurige getallen gebruiken in de GNU wetenschappelijke bibliotheek (die je natuurlijk kunt implementeren in elke gewenste taal).
Antwoord
Hardware. U moet verbinding maken met hardware die entropie kan verzamelen van … waar dan ook. Lees de statische gegevens van een radio, plaats een webcamera op een lavalamp, of laat de gebruiker brabbeltaal typen of met de muis spelen. Zonder enig contact met de echte wereld is het genereren van echte willekeur onmogelijk. Het is een belangrijk gebied o f studie, en er is veel werk in gestoken. Ik betwijfel of je “nieuwe wegen gaat inslaan, dus je zou echt op de schouders van reuzen moeten gaan staan en wikipedia-artikelen moeten gaan lezen.
” Het genereren van willekeurige getallen is te belangrijk om aan over te laten kans. “
-Robert R. Coveyou
EDIT
Dus ik” ve leerde dat de hardware die u zoekt in feite slechts een CMOS-chip is. Het soort goedkope cameras. Bewaar het gewoon in het donker, stel de gevoeligheid hoger in, en blijkbaar hebben de minieme variaties die het waarneemt hun oorsprong in de kwantummechanica, waar we onze entropie in het echte leven van afleiden.
Antwoord
De laatste keer dat ik keek, dat was LOOOOONG tijd geleden, de canonieke referentie over de implementatie van pseudo-willekeurige nummergeneratoren (PRNG ) is Knuth, Vol. 2, “Seminumerieke algoritmen” .
DENK er niet eens over om uw eigen PRNG te implementeren totdat u in ieder geval door Knuth hebt gekeken.
Geef een reactie