mistery

7 отговора 180 прегледа
#1

mistery

kak raboti generatora na sluchaini chisla? (ili ima li takova neshto kato "sluchaino chislo")

Отговор
в отговор на hmmm #2

Re: mistery

Нищо случайно няма - помня, че копаше числото от еди коя си клетка, пък каквото е вътре в този момент, се води случайно число.

Отговор
в отговор на hmmm #3

Re: mistery

и аз си нямам представа
поредица от псевдослучайни числа някои го наричаха
Говореше се че НАСА дава луди пари за генератор на случайни числа над 10 милиона
Всъщност... с някой дебъгер мисля може лесно да се разбере ама всъщност за кво ти е?

Редактирано от DarthMaul на

Отговор
в отговор на hmmm #4

Re: mistery

Mi na dosta mesta se polzwa. Pri razni smotani igri4ki, za izsledwaniq... Za kriptirane...
Raboti po algoritmi, koito sa razli4ni. Toest wseki moje da si naprawi swoi generator. Syzdawat posledowatelnost ot 4isla, bazirani na nqkakwo osnowno 4islo (grubo kazano). Imenno poradi towa, ima zakonomernost w syzdadenite 4isla, taka 4e te ne sa sywsem slu4aini. Wikat im psewdo 4isla (psewdosllu4aini)
Mislq, 4e ima6e specifikaciq za towa ne6to, move da potyrsi6 w mrejata
Eto primerno 4ast ot programka na QBasic:

randomize timer
rnd(x)
y=x*5
Kakto wijda6 w Basic, kakto i wyw drugite ezici, si ima biblioteki, funkcii za random number...
Posle s towa 4islo moje6 da si prawi6 kakwoto si iska6.
Dobrite algoritmi za random sa bazirani na nqkolko podalgorityma, koito generirat, posle obedinqwat rezultata...
Sy6to taka perioda za powtarqneto na redicata 4isla, trqbwa da e golqm....
Ina4e - se6ta6 se - mnogo skoro pak se generira sy6toto 4islo i...
We4e nqma takyw generator ...:)))


Ako ne6to e gre6no, ili ne sym bil mnogoooo to4en, molq da me izwinite, wse pak az ne se zanimawam s tiq ne6ta...

Отговор
в отговор на hmmm #5

Re: mistery

Има два типа генератори на случайни числа: софтуерни и хардуерни.
Софтуерните са базирани на изчисление, и тъй като в компютъра нещата са детерминирани, числата не са съвсем случайни. Например в езика С "случайните числа се генерират по следния начин:


1) Имаме база, начално число, BASE;
2) За всяко ново число променяме BASE така:
BASE = BASE * 214013 + 2531011;
коефициентите не са случайни, специално са избрани
за да не се изражда поредицата;
3) Случайното число се получава като се вземат няколко цифри от средата на BASE:

random_number = (BASE / 2^16) MOD (2^16-1)


За по-случайна поредица се използува допълнително информация за "случайно"-ставащите събития в компютъра: таймер, натискане на клавиатура, местене на мишка, ативност на процесите, честота на мрежовите заявки и др.

Хардуерните генератори са устройства, които се закачват от вън, и дават истински случайни числа. Класиката е датчик, основан на броенето на частиците при радиоактивно разпадане. Има и по-прости радиотехнически средства, основани на анализ на топлинния шум в усилвателите.

Отговор
в отговор на Osogovetz #6

Re: mistery

в Pascal пък освен функцията random, има и променлива RandSeed , с която може да определиш начало на поредицата.

че алгоритъма е ефективен може да се провери лесно,
задаваш му да изчертава графика от точки, и след известно време ще се запълни целия правоъгълник

Отговор
в отговор на Kpъr #7

Re: mistery

Това за ефективноста май не е много сериозно.
За оценка на един random-алгоритъм има доста математически характеристики като разпределение, дисперсия около средната стойност, временни корелации и т.н.

Алгоритмите в стандартната библиотека и на Паскал и С не са много сериозни: стават за моделиране по метода на Monte-Karlo (с учебна цел!), но изобщо не се препоръчват за генериране на криптографски ключове например.

Отговор
в отговор на hmmm #8

Re: mistery

vsashnost vaprosat mi e chisto teoretichen.

znam za funkciite v ezitzite - varshat rabota!

no iskah da znam po printzip kak se izbira "sluchaino chislo" v informatikata, a i v realniya zhivot vaobshte.

taka che, blagodarya, ima i hubavi otgovori :-)

Отговор