Как може един напълно логичен машина като компютър генерира случайно число?
Има два начина, които компютри могат да генерират случайни числа: стара <р> Можете да създадете някаква устройство, което следи напълно произволна природно явление, и изпраща резултатите си с компютъра. Например, бихте могли да поставите парче на радиоактивен материал в предната част на Geiger брояч и свържете Geiger брояч към компютър. Тъй като радиоактивен разпад е случайна, на Geiger брояч ще създаде истински случайни числа. Този подход е доста рядко, защото не много хора имат гайгерови броячи, свързани с техните машини. Можете да създадете формула, която генерира псевдо-случайни числа. При проектирането на формулата, идеята е тя да произвежда поредица от числа, която ще изглежда случайно за всеки, който не знаеше какво е формулата. Характеристики на добра формула включват:
<Ли> Не повторение: Последователността не цикъл наоколо и да се повтори. Добър цифров разпределение: Ако формулата е производство на случайни числа между 0 и 9, броят на нули, такива двойки, и т.н., които трябва да се произвежда приблизително равно в продължение на дълъг период от време. Липсата на предвидимост: Вие няма как да се предвиди какво ще бъде следващото число, ако не знаете формулата и семената (първоначалната стойност)
<р> Ето един пример за прост случаен номер формула от. книгата " The C език за програмиране, " от Kernighan и Ричи:
<предварително> инт ранда () {random_seed = random_seed * 1103515245 12345; връщане (неподписан INT) (random_seed /65,536) 32,768%; }
Тази формула предполага съществуването на една променлива, наречена random_seed, която първоначално се установява в известна номер. The random_seed променлива се умножава по 1103515245 и след това получава 12 345 добавени към продукта; След random_seed се заменя с тази нова стойност. Това всъщност е доста добра псевдо-генератор на случайни номера. Той е с добро разпределение и той не е повтарящ се. Ако го използвате, за да произвежда случайни числа между 0 и 9, тук са първите 20 ценностите, които тя произвежда ако семената е 10:
<предварително> 44607423505664567674
Ако имате го произвеждат 10,000 стойности между 0 и 9, ето разпределението:
<предварително> 0 - 10151-10242 - 10483-9964 - 9885-10016 - 9967-10068 - 9659-961 <р> Всеки псевдо-случайни числа формула зависи от стойността на семена, за да за