Случайные числа в Perl

Discussion in 'PHP' started by biophreak, 9 Oct 2007.

  1. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Народ, собственно интерисует генератор случайных комбинаций...
    Только не надо сразу орать про rand() и прочее...интерисует именно случайность, а не псевдослучайность...
    У кого есть какие идеи?
    Думаю что генерация по времени\дате и прочей лабуде сразу отпадает ибо воспроизводимо...
    Хорошый алгоритм в gpg(pgp) - юзер-ориентированые(грубо говоря), т.е. клики мыши, изменения координат итд итп...

    Заранее спасибо!
     
  2. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    rand
    Синтаксис
    rand EXPR
    rand
    Описание
    Функция возвращает случайное вещественное число, принадлежащее диапазону от 0 до EXPR. При этом значение EXPR должно быть положительным числом. Если аргумент не указан, генерируется число в диапазоне от 0 до 1. Эта функция автоматически вызывает srand, если она не вызывалась ранее...
     
  3. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Прочитай сообщение получше :))
    rand - это генератор псевдослучайностей, а интерисует именно генератор случайного значения...по принципу gpg конечно не сделаешь в перле, но все таки еще идеи? ;)

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

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Все в этом мире псевдослучайно =). Я думаю ты не увидишь разницу между нормальным ГПСЧ и ГСЧ, только мозг извратишь. Хотя, смотри по первой ссылке есть отдельный абзац.
    ru.wikipedia.org/wiki/Генератор_ псевдослучайных_чисел
    http://ru.wikipedia.org/wiki/Метод_Монте-Карло
     
    #4 Ni0x, 9 Oct 2007
    Last edited: 9 Oct 2007
  5. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> ЗЗЫЖ rand повторяем

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

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

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    /dev/urandom - повторяем...это генератор псевдослучайностей...
    А так называемый генератор случайнх чисел основан не на технологии "пальцем в небо" - он генерит случайную последовательность, в зависимости от некоторых фактов(такты проца, работа мышью(координаты, нажатие, скрол), и многое другое...ссылки на пост выше твоего %))))

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

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    А почему на перл нельзя сделать вариант с мышкой? - можно, читай perldoc Tk.
    А еще есть вариант с клавиатурой: editbox, случайный ввод пользователя и на основе ввода генерация случайного числа.
     
  8. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Оно-то дело ясное, но приложение будет работать демоном...гденить в углу на сервачке )))
    Запущено будет не из под рута.../dev/random не канает из-за своей "тормознутости".
    Есть еще идеи...а то я чет в ступоре :\
     
  9. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    слушай, biophreak,
    вот докажи мне, что обычный перловый rand() в твоем скрипте применять нельзя, тока не рассказами про псевдослучайные и случайные последовательности, а конкретным математическим доказательством.. в конце-коцов, ты можешь несколько раз вызвать rand и еще рандомно перемешать полученные последовательности, значительно повысив случайность итоговой последовательности.. =/
     
  10. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    На сонную голову пришел вариант только с rand =\
    Code:
    my $rand = 'int rand 0xffffff;';
    print eval $rand x rand 0xfff;
    
    По идее повторный вызов rand'a на основе рез-та предыдущего вызова rand должен снизить шансы повтора имхо. Причем чем больше вызовов, тем меньше шанс.
     
  11. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    2Digimortal: Хммм...если при аудите кода прийдут к выводу что система является ГПСЧ, то меня уволят, а если ГСЧ, то повысят зарплату ;)
     
  12. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    biophreak

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

    а когда до них (твоих работодателей) дойдет, что ГСЧ - это медленно, надо ГПСЧ, то тебе всего лишь надо будет в коде random заменить на urandom ; )..
     
    #12 Digimortal, 10 Oct 2007
    Last edited: 10 Oct 2007
  13. xMash

    xMash New Member

    Joined:
    19 Sep 2007
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    «Ещё Джон фон Нейман говорил, что только лишь арифметическими методами случайное число получить невозможно»

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

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    2Digimortal: Можно конечно поиграться с rand(); и Brandwidth, в плане, допустим, смещений различных...
    В общем спасибо всем, считаю тему закрытой.