это простой генератор случайных чисел?

Тема в разделе "WASM.BEGINNERS", создана пользователем darkness, 19 янв 2007.

  1. darkness

    darkness New Member

    Публикаций:
    0
    Регистрация:
    8 дек 2006
    Сообщения:
    14
    Нашёл в букваре пример:

    Код (Text):
    1. imul dx, 4E35h
    2. inc  dx
    это выражение я понимаю следующим образом imul умножает число 20021 на содержащееся в регистре dx,
    причём в самом коде проги dx не используется до этого момента, а следовательно мы умножаем 20021 на 0,
    и потом результат помещаем в dx...
    ну и след команда увеличивает dx на 1....
    Результатом всего этого на мой взгляд будет след: 0*20021+1=1
    Вот а книге написано, что это простейший генератор случайных чисел...
    Разъясните, где я не прав...
     
  2. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Это код, выдранный из контекста. На самом деле в dx должно содержаться предыдущее значение генератора случайных чисел - так называемого "Seed". То есть, если начинать с нуля, последовательность Seed-ов будет такой: 0->1->20022->42287->33980->...
     
  3. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Угу. Линейный конгруэнтный метод. Оба числа должны быть простыми.
     
  4. Span

    Span New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2006
    Сообщения:
    134
    А инициировать лучше не константой, а каким-нибудь временем с момента включением. Ну или просто текущим временем, либо другой псевдослучайной величиной.
     
  5. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    простите, а в чем состоит "магическое действие" этого dx? почему именно он здесь юзается? с тем же успехом можно было бы юзать:

    Код (Text):
    1. mov cx, [SEED] ;закинули  начальную константу
    2. imul cx, 4E35h
    3. inc  cx
    или нет?

    мы просто берем одно число и умножаем его на 4e35h, а затем увеличиваем на 1, и прям уж это и будет сабжем? проясните этот момент.
    с тем же успехом можно взять число 12345d как SEED, поделить его на 123d, и вычесть 3. а затем это значение юзать как новый SEED, и опять по новой.
    или это бред уже? :)
     
  6. darkness

    darkness New Member

    Публикаций:
    0
    Регистрация:
    8 дек 2006
    Сообщения:
    14
    varnie, по-моему бреда не получится.... тоже в своём роде генератор случайных чисел... или нет?
     
  7. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    возьми лучше соотв. раздел кнута почитай чтоли...
     
  8. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    infern0,
    раз вы обладаете этими сокровенными знаниями о том, что этот dx используется здесь неспроста, а также о том, что и само число 4E35h тоже не с потолка взялось, то лучше бы пояснили что к чему. а соотв. раздел Кнута не у каждого есть.
    знаете - скажите, люди вам спасибо скажут.

    это похоже на "я знаю ответ на ваш вопрос, но не скажу ответа, т.к. сами думайте, а я вот вам лишь подсказку дам".
    ps: без обид.
     
  9. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    varnie
    Это действительно похоже, но... "Но" в том, что у Кнута этому ответу посвящено пол-тома...

    darkness
    Генератор - да, но вот насколько это будут случайные числа - это уже большой вопрос.
     
  10. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Sergey_R,
    теперь понятно. да, раз такой объем инфы посвящен этому вопросу, то пересказывать его здесь нету смысла. спасибо что разъяснили.
     
  11. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    он доступен в электронном виде после примерно минут 5-7 поиска в гугле.
     
  12. KpeHDeJIb

    KpeHDeJIb New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    24
    В книге у Юрова "Asse,bler. Практикум" есть несколько глав посвещенных как раз таки генераторам случайных чисел, там есть как теория так и код. Читаем и радуемся (: