Random - просто это или нет (MASM),

Тема в разделе "WASM.ASSEMBLER", создана пользователем BlackNeuromancer, 6 фев 2005.

  1. BlackNeuromancer

    BlackNeuromancer New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    4
    Мне нужно при каждом нажатие на кнопку чтобы генерилось случайное 5-ти значное число? Как это реализовать
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    findstr /mis "random" c:\masm32\*.asm *.inc
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    S_T_A_S_



    А это ты чего такое написал, я не понял %)
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Дык команда командной строки :) выдаёт имена файлов подкаталога MASM32, где есть слово "random"

    Там точно есть готовый генератор, только сам пакет я давно не качал, поэтому хз в каком он подкаталоге щас.
     
  5. BlackNeuromancer

    BlackNeuromancer New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    4
    Надеюсь все таки помогут :) А не просто болтать будут
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Понятно.

    Я в последнее время для поиска использую Total Commander :)
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    BlackNeuromancer

    > Мне нужно при каждом нажатие на кнопку чтобы генерилось случайное 5-ти значное число?



    Для начала, хотя бы, написать диалог с кнопкой и Edit'ом :derisive:
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Вот код для fasm но должен работать:
    Код (Text):
    1.  
    2. random_seed dd 0
    3.  
    4. ; начальная инициализация
    5. randomize:
    6.     rdtsc
    7.     xor eax, edx
    8.     mov [random_seed], eax
    9.     ret
    10.  
    11.  
    12. ; Park Miller random number algorithm.
    13. ; out: eax 0 ... 99999
    14. random:
    15.     mov eax, [random_seed]
    16.     xor edx, edx
    17.     mov ecx, 127773
    18.     div ecx
    19.     mov ecx, eax
    20.     mov eax, 16807
    21.     mul edx
    22.     mov edx, ecx
    23.     mov ecx, eax
    24.     mov eax, 2836
    25.     mul edx
    26.     sub ecx, eax
    27.     xor edx, edx
    28.     mov eax, ecx
    29.     mov [random_seed], ecx
    30.     mov ecx, 100000
    31.     div ecx
    32.     mov eax, edx
    33.     ret




    Asterix >




    А я FAR :)

    поэтому не знаю, какие кнопочки нужно нажимать в твоей проге, а командная строка вроде у всех есть :)





    ЗЫ: Какой-то код странный на sources.ru - зачем-то самомодификацию делает, наверное чтобы тормозил и вылетал если у секции кода нет доступа на запись =)
     
  10. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    В Винде есть API функция - системная энтропия.

    Дает достаточно качественные циферьки ...
     
  11. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    asmlamo Как называется ф-ция?
     
  12. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    если к генерируемым случайным числам предъявляются серьезные требования (криптографические случайные числа), то это к CryptGenRandom из CryptoAPI.

    Если нужны просто случайные числа и период и распределение не сильно заботит -- см. исходники rand() или то что S_T_A_S_ запостил...
     
  13. Spectrum

    Spectrum Member

    Публикаций:
    0
    Регистрация:
    8 дек 2005
    Сообщения:
    43
    Адрес:
    Одесса
    Пробовал и rdtsc и CryptGenRandom.
    Первый вариант естественно в разы быстрее, т.к. в цикле все дело происходит.
    Качество тоже не подвело.
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Spectrum
    не знаю, не знаю... с RDTSC возможно могут быть некоторые неочевидные вещи...

    bogrus
    Виндовая функция:
    Код (Text):
    1. function RtlGenRandom(RandomBuffer: PBYTE;
    2.   RandomBufferLength: ULONG): Boolean; stdcall; external advapi32 name 'SystemFunction036';
    CryptGenRandom через нее реализована.
    Правда RtlGenRandom вроде нет в 9x...
     
  15. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ребят, ну вы мочите :)
     
  16. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    ааа точно :)
    Spectrum смутил :)
     
  17. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
  18. Spectrum

    Spectrum Member

    Публикаций:
    0
    Регистрация:
    8 дек 2005
    Сообщения:
    43
    Адрес:
    Одесса
    Имел в виду только то, что APIшную функцию в реальном проекте помещать в третий вложенный цикл, это слишком.