В книге "php" (Крис Ньюмен) нашел одну интересную вещь. Здесь указывается что не бывает рэндомных значений. Все делается по алгоритму программы и если посчитать все с полным соответствием то можно предугадать резутльтат рэндомного значения. Прямым текстом написано что не бывает воще в программировании случайных выражений все состоит строго по циклу. 1. Правду ли я прочитал? 2. (если правду) то можно ли как нибудь сделать вобще программу которая действительно будет высчитывать случайное число т.е. которое невозможно посчитать. ( я подразумеваю под тем что не человек будет например зниматся высчитыванием зарание значения рэндомного результата, а программа написанная для вычисления зарание предвиденного результата) 3. И все же, по какому алгоритму работает оператор random? 4. Хотелось бы ещё получить сведеня в целом о работе этого механизма и все что с ним связано, где его например можно применять? гже он полезен, а где можно обойтись и другим?
Обычно это число берется с времени... т.е. скажем считывается время (милесекунды) и это число и будет случайным.
а мне казалось что все делается намного проще, с помощью массивов... хотя кто какой алгоритм придумает...
Абсолютно случайного числа сделать нельзя, все рандомы это псевдослучайные числа, предугадать ? ну в зависимости имееться ли ограничения в рандоме, если от 1 до 100 то можно, а вот больше, имхо практически невозможно. Даже граматно организованый рандом, можно сделать так что за большое время перебора нисовпадет ниодно значение... Незнаю как в Пхп, но в Си алгоритм зависит от того как ты будешь этот рандом организовывать, тип данных, можно в зваисимости от времени и прочего.
Sharingan->ну в принципе, я почему то уверен что можно....даже допустим по этому же времени....мы пишем программу в которую тупо забиваем время, с которого будет выведено случайное число...и по этому же алгоритму мы вычисляем результат.... Так же допустим если мы запускаем простую функцию нахожденияслучайного числа в каком либо промежутке чисел, то это число можно предугадать заглянув уже в сам код C. понимаешь меня?
ну вообще если только алгоритм работает в контексте одного процесса и не зависит от "жизненных" характеристик - время, температура и т.п. >>3. И все же, по какому алгоритму работает оператор random? математическому - в общем случае задается рекурентная последовательность с заданным первым элементом и большим периодом, то есть если выпало число x, то в следующий раз оно выпадет только через сравнительно большое число итераций. почитай кнута да можно, программно, но не алгоритмически.
Ну так, смотри несмотря на время, рандом может выдать тысячи значений, ну поставишь ты такой же алгоритм, и все равно оно выдаст не то значение что срандомизировало, ну если сомниваешься, попробуй написать программу...
>>4. Хотелось бы ещё получить сведеня в целом о работе этого механизма и все что с ним связано, где его например можно применять? гже он полезен, а где можно обойтись и другим? Псевдослучайных чисел обычно хватает за глаза. В шифровании для генерации ключа обычно используются более сильные коды, например, Win PGP просит подвигать мышкой для генерации ключа и считывает ее перемещения
_Great_->вот это система мздец полный...эт когда веб мани кошелек регистрируешь применяется та система...я помню..=)
вобще можно вычеслить (вернее нужно в криптографии) многие шифры кодируются этими псевдослучайными числами, т.е для расшифрования сообщения нужно например вычислять последовательность псевдо случайных чисел, для этого нужно знать формулу генерации, определенные коэфициенты (в криптоанализе подрозумевается, что они известны изначально) и определенное начальное значение которое и является ключем шифрования, вопрос расшифровки заключается в знании этого начального значения
Рандом можно спокойно реализовать, просто кроме алгоритмической части должен быть доступ к внешним источникам, откуда будет получена информация.
простая формула: Ki+1=(a*Ki+b) mod c Ki-предыдущее случайное число Ki+1-слудующее с=4294967296 или 18446744073709551616 b-нечетное число a mod 4=1 при этом период последовательности = с
Ну не думаю, что прям уже так спокойно... Это получится уже аппаратный ГПСЧ с источником информационной энтропии, а такие приборы обычно используются военными и держатся в секрете.
ой, ксури, ты не знаешь даже что такое метод дихотомии, а тут про энтропию пишешь, про которую тут никто не слышал даже хихи вообще думается, чтобы обсуждать подобные темы на должном уровне нужно хотя бы кафедру соответствующую закончить, а так получается обмен своими теориями и умными словами.
Я знаю определение энтропии, знаю определение ГПСЧ. Этого достаточно, чтобы я мог упоминать о них. Про дихотомию, ты мне уже так мозг проебал, что прикинь, я прочитал, что это такое.
в бейсике если писать прогу с просто рандомом встроеным, то при каждом запуске она будет выдавать одну и ту же последовательность. ЧТобы этого избиэать в начале проги пишится initializate random - типо такой строчки, чтобы 1 число зависело от времени запуска.
2Moldman эхх чтобы последовательность была случайной алгоритма вообще не должно быть.. это не алгоритмическая задача.