þekking Discovery
/ Knowledge Discovery >> þekking Discovery >> tækni >> tölva >> tölva vélbúnaður >>

Hvernig getur algerlega rökrétt tölva búa til handahófi númer?

How getur algerlega rökrétt vél eins og tölva búa til handahófi númer?
Hvernig getur algerlega rökrétt vél eins og tölva búa til handahófi númer?

Það eru tvær leiðir sem tölvur geta mynda af handahófi tölur:

Hægt er að búa til einhvers konar tæki sem fylgist alveg handahófi náttúrulega atburði og sendir niðurstöður sínar til the tölva. Til dæmis gætir þú setur stykki af geislavirku efni í framan Geiger teljara og tengja Geiger teljara við tölvu. Þar geislavirk rotnun er af handahófi, sem Geiger-teljari myndi búa til raunverulega slembitölur. Þessi aðferð er mjög sjaldgæft, því ekki margir hafa Geiger teljara tengd vélum þeirra. Þú getur búið til formúlu sem býr til gervi-handahófi númer. Við hönnun formúluna, hugmyndin er að það að framleiða band af tölum sem myndi líta handahófi til einhver sem ekki vita hvað uppskrift er. Einkenni góða formúlu eru:

  • No endurtekning: The röð er ekki hringrás um og endurtaka sig. Good tölustafir dreifing: Ef uppskrift er að framleiða slembitölur á bilinu 0 til 9, fjölda núllum, sjálfur, tvo og tvo, osfrv sem það framleiðir ætti að vera nokkurn veginn jöfn yfir langan tíma. Skortur á fyrirsjáanlegt: Þú hefur enga leið að spá hvað næsta tala vilja vera nema þú vitir uppskrift og fræ (upphafsgildi)

    Hér er dæmi um einfalda handahófi-númer formúlu frá. Bókin " The C Programming Language, " eftir Kernighan og Ritchie:

     INT rand () {random_seed = random_seed * 1103515245 12.345; aftur (óundirritaður int) (random_seed /65536)% 32.768; } 

    Þessi uppskrift gerir ráð fyrir tilvist breytu sem heitir random_seed, sem er upphaflega sett til að sumir tala. The random_seed breyta er margfaldað með 1,103,515,245 og þá 12.345 fær bætt afurð; random_seed er síðan tekið upp í þessari nýju gildi. Þetta er í raun nokkuð gott gervi-slembiteljarann. Það hefur góða dreifingu og það er ekki endurtaka. Ef þú notar það til að framleiða slembitölur á bilinu 0 til 9 eru hér fyrstu 20 gildi sem það framleiðir ef fræ er 10:

     44607423505664567674 

    Ef þú ert það framleiða 10.000 gildum milli 0 og 9, hér er dreifing:

     0 - 10.151-10.242 - 10483-9964 - 9885-10016 - 9967-10068 - 9659-961 

    Allar gervi-handahófi númer formúla fer eftir fræ gildi til að hefja röð. Ef þú byrjar með sama fræ, þú vilja fá sömu röð gildum frá formúlu. Þannig að ef þú gefur rand () virka sýnt hér að ofan fræ 10 á einni tölvu og horfa á straum af tölum það framleiðir, það verður eins og straumi

    Page [1] [2]