PDA

Просмотр полной версии : Случайные числа в Perl


biophreak
09.10.2007, 22:33
Народ, собственно интерисует генератор случайных комбинаций...
Только не надо сразу орать про rand() и прочее...интерисует именно случайность, а не псевдослучайность...
У кого есть какие идеи?
Думаю что генерация по времени\дате и прочей лабуде сразу отпадает ибо воспроизводимо...
Хорошый алгоритм в gpg(pgp) - юзер-ориентированые(грубо говоря), т.е. клики мыши, изменения координат итд итп...

Заранее спасибо!

Sn@k3
09.10.2007, 22:39
rand
Синтаксис
rand EXPR
rand
Описание
Функция возвращает случайное вещественное число, принадлежащее диапазону от 0 до EXPR. При этом значение EXPR должно быть положительным числом. Если аргумент не указан, генерируется число в диапазоне от 0 до 1. Эта функция автоматически вызывает srand, если она не вызывалась ранее...

biophreak
09.10.2007, 22:44
Прочитай сообщение получше :))
rand - это генератор псевдослучайностей, а интерисует именно генератор случайного значения...по принципу gpg конечно не сделаешь в перле, но все таки еще идеи? ;)

ЗЗЫЖ rand повторяем

Ni0x
09.10.2007, 22:52
Все в этом мире псевдослучайно =). Я думаю ты не увидишь разницу между нормальным ГПСЧ и ГСЧ, только мозг извратишь. Хотя, смотри по первой ссылке есть отдельный абзац.
ru.wikipedia.org/wiki/Генератор_ псевдослучайных_чисел
http://ru.wikipedia.org/wiki/Метод_Монте-Карло

Digimortal
10.10.2007, 00:24
>> ЗЗЫЖ rand повторяем

не понял этого.. продемонстрируй.. )

если под *nix - то там /dev/urandom к твоим услугам..

biophreak
10.10.2007, 00:29
/dev/urandom - повторяем...это генератор псевдослучайностей...
А так называемый генератор случайнх чисел основан не на технологии "пальцем в небо" - он генерит случайную последовательность, в зависимости от некоторых фактов(такты проца, работа мышью(координаты, нажатие, скрол), и многое другое...ссылки на пост выше твоего %))))

ЗЫЖ А насчет повторяемости - у ГПСП(генератор псевдо-случайных последовательностей) - у него ГОРАЗДО больший шанс повторяемости, нежели у ГСП(генератор Случайных последовательностей)

KSURi
10.10.2007, 00:34
А почему на перл нельзя сделать вариант с мышкой? - можно, читай perldoc Tk.
А еще есть вариант с клавиатурой: editbox, случайный ввод пользователя и на основе ввода генерация случайного числа.

biophreak
10.10.2007, 00:39
Оно-то дело ясное, но приложение будет работать демоном...гденить в углу на сервачке )))
Запущено будет не из под рута.../dev/random не канает из-за своей "тормознутости".
Есть еще идеи...а то я чет в ступоре :\

Digimortal
10.10.2007, 01:07
слушай, biophreak,
вот докажи мне, что обычный перловый rand() в твоем скрипте применять нельзя, тока не рассказами про псевдослучайные и случайные последовательности, а конкретным математическим доказательством.. в конце-коцов, ты можешь несколько раз вызвать rand и еще рандомно перемешать полученные последовательности, значительно повысив случайность итоговой последовательности.. =/

KSURi
10.10.2007, 01:09
На сонную голову пришел вариант только с rand =\

my $rand = 'int rand 0xffffff;';
print eval $rand x rand 0xfff;

По идее повторный вызов rand'a на основе рез-та предыдущего вызова rand должен снизить шансы повтора имхо. Причем чем больше вызовов, тем меньше шанс.

biophreak
10.10.2007, 01:13
2Digimortal: Хммм...если при аудите кода прийдут к выводу что система является ГПСЧ, то меня уволят, а если ГСЧ, то повысят зарплату ;)

Digimortal
10.10.2007, 01:24
biophreak

тогда /dev/random тебе в руки, точнее в код, и пофигу, что медленно работать будет - тебе ж за это ведь зарплату повысят...

а когда до них (твоих работодателей) дойдет, что ГСЧ - это медленно, надо ГПСЧ, то тебе всего лишь надо будет в коде random заменить на urandom ; )..

xMash
10.10.2007, 09:16
«Ещё Джон фон Нейман говорил, что только лишь арифметическими методами случайное число получить невозможно»

http://www.cyberinfo.ru/5/1655_1.htm

biophreak
10.10.2007, 13:04
2Digimortal: Можно конечно поиграться с rand(); и Brandwidth, в плане, допустим, смещений различных...
В общем спасибо всем, считаю тему закрытой.