рэндом- работа по алгоритму или поиск случайного?

Discussion in 'PHP' started by procedure, 7 Jan 2008.

  1. procedure

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

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    В книге "php" (Крис Ньюмен) нашел одну интересную вещь. Здесь указывается что не бывает рэндомных значений. Все делается по алгоритму программы и если посчитать все с полным соответствием то можно предугадать резутльтат рэндомного значения.
    Прямым текстом написано что не бывает воще в программировании случайных выражений все состоит строго по циклу.
    1. Правду ли я прочитал?
    2. (если правду) то можно ли как нибудь сделать вобще программу которая действительно будет высчитывать случайное число т.е. которое невозможно посчитать. ( я подразумеваю под тем что не человек будет например зниматся высчитыванием зарание значения рэндомного результата, а программа написанная для вычисления зарание предвиденного результата)
    3. И все же, по какому алгоритму работает оператор random?
    4. Хотелось бы ещё получить сведеня в целом о работе этого механизма и все что с ним связано, где его например можно применять? гже он полезен, а где можно обойтись и другим?
     
    #1 procedure, 7 Jan 2008
    Last edited: 7 Jan 2008
  2. xGOR

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

    Joined:
    25 Nov 2007
    Messages:
    83
    Likes Received:
    38
    Reputations:
    -5
    Обычно это число берется с времени... т.е. скажем считывается время (милесекунды) и это число и будет случайным.
     
  3. procedure

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

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    а мне казалось что все делается намного проще, с помощью массивов...
    хотя кто какой алгоритм придумает...
     
  4. Sharingan

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

    Joined:
    5 May 2007
    Messages:
    143
    Likes Received:
    147
    Reputations:
    16
    Абсолютно случайного числа сделать нельзя, все рандомы это псевдослучайные числа, предугадать ? ну в зависимости имееться ли ограничения в рандоме, если от 1 до 100 то можно, а вот больше, имхо практически невозможно. Даже граматно организованый рандом, можно сделать так что за большое время перебора нисовпадет ниодно значение...
    Незнаю как в Пхп, но в Си алгоритм зависит от того как ты будешь этот рандом организовывать, тип данных, можно в зваисимости от времени и прочего.
     
    #4 Sharingan, 7 Jan 2008
    Last edited: 7 Jan 2008
  5. procedure

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

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    Sharingan->ну в принципе, я почему то уверен что можно....даже допустим по этому же времени....мы пишем программу в которую тупо забиваем время, с которого будет выведено случайное число...и по этому же алгоритму мы вычисляем результат....
    Так же допустим если мы запускаем простую функцию нахожденияслучайного числа в каком либо промежутке чисел, то это число можно предугадать заглянув уже в сам код C. понимаешь меня?
     
  6. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    ну вообще если только алгоритм работает в контексте одного процесса и не зависит от "жизненных" характеристик - время, температура и т.п.

    >>3. И все же, по какому алгоритму работает оператор random?
    математическому - в общем случае задается рекурентная последовательность с заданным первым элементом и большим периодом, то есть если выпало число x, то в следующий раз оно выпадет только через сравнительно большое число итераций. почитай кнута :)

    да можно, программно, но не алгоритмически.
     
  7. Sharingan

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

    Joined:
    5 May 2007
    Messages:
    143
    Likes Received:
    147
    Reputations:
    16
    Ну так, смотри несмотря на время, рандом может выдать тысячи значений, ну поставишь ты такой же алгоритм, и все равно оно выдаст не то значение что срандомизировало, ну если сомниваешься, попробуй написать программу...
     
  8. procedure

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

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    а именно на php можно? Как ты себе представляешь эту программу?
     
  9. procedure

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

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    очень большой процесс геморойа...лучше представить это все в теории и убедится..
     
  10. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    >>4. Хотелось бы ещё получить сведеня в целом о работе этого механизма и все что с ним связано, где его например можно применять? гже он полезен, а где можно обойтись и другим?
    Псевдослучайных чисел обычно хватает за глаза. В шифровании для генерации ключа обычно используются более сильные коды, например, Win PGP просит подвигать мышкой для генерации ключа и считывает ее перемещения
     
  11. procedure

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

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    _Great_->вот это система мздец полный...эт когда веб мани кошелек регистрируешь применяется та система...я помню..=)
     
  12. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    вобще можно вычеслить (вернее нужно в криптографии) многие шифры кодируются этими псевдослучайными числами, т.е для расшифрования сообщения нужно например вычислять последовательность псевдо случайных чисел, для этого нужно знать формулу генерации, определенные коэфициенты (в криптоанализе подрозумевается, что они известны изначально) и определенное начальное значение которое и является ключем шифрования, вопрос расшифровки заключается в знании этого начального значения
     
  13. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Рандом можно спокойно реализовать, просто кроме алгоритмической части должен быть доступ к внешним источникам, откуда будет получена информация.
     
  14. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    простая формула:
    Ki+1=(a*Ki+b) mod c

    Ki-предыдущее случайное число
    Ki+1-слудующее
    с=4294967296 или 18446744073709551616
    b-нечетное число
    a mod 4=1
    при этом период последовательности = с
     
    1 person likes this.
  15. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Ну не думаю, что прям уже так спокойно... Это получится уже аппаратный ГПСЧ с источником информационной энтропии, а такие приборы обычно используются военными и держатся в секрете.
     
  16. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    ой, ксури, ты не знаешь даже что такое метод дихотомии, а тут про энтропию пишешь, про которую тут никто не слышал даже хихи:) вообще думается, чтобы обсуждать подобные темы на должном уровне нужно хотя бы кафедру соответствующую закончить, а так получается обмен своими теориями и умными словами.
     
    1 person likes this.
  17. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Я знаю определение энтропии, знаю определение ГПСЧ. Этого достаточно, чтобы я мог упоминать о них. Про дихотомию, ты мне уже так мозг проебал, что прикинь, я прочитал, что это такое.
     
  18. Moldman

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

    Joined:
    12 Jun 2007
    Messages:
    91
    Likes Received:
    35
    Reputations:
    -5
    ИМХО
    Чтоб был случайным тут нужен ИИ
     
  19. Talisman

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

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    в бейсике если писать прогу с просто рандомом встроеным, то при каждом запуске она будет выдавать одну и ту же последовательность. ЧТобы этого избиэать в начале проги пишится initializate random - типо такой строчки, чтобы 1 число зависело от времени запуска.
     
  20. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    2Moldman эхх чтобы последовательность была случайной алгоритма вообще не должно быть.. это не алгоритмическая задача.
     
    2 people like this.