· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Генератор случайных чисел!!!

Посл.отвђт Сообщенiе


Дата: Сен 19, 2003 21:41:09 · Поправил: Безпощадный даос

Мне нужен такой гениратор в катором я мог бы генирировать числа от 0 до переменной X. Я себе голову словал не знаю как это коректно сделать!!!


Дата: Сен 19, 2003 21:43:20 · Поправил: Aquila

Читерский способ: использовать библиотеку mscvrt.dll - там, вроде, должны быть соответствующие функции. Жульничество, конечно, но может быть подойдёт ;).


Дата: Сен 19, 2003 21:54:26

Если Х не очень большое, то можно генерировать число до 2^32 а затем взять остаток от деления на X.


Дата: Сен 19, 2003 22:01:26

Songoku
Посмотри на сайте в разделе исходников, там это кажется было.

Если лень, то вот исходник (рипнут, кажется, из сишной библиотеки).


_1053163556__random.inc


Дата: Сен 19, 2003 22:12:40

rand()%n, где n - то число, которое тебе надо. Black_mirror это и сказал.


Дата: Сен 20, 2003 05:07:37

ntdll экспортирует RtlRandom - принимает один параметр, наверное модуль. Под NT ntdll все равно в любой процесс мапится можно ее заюзать или дизасмнуть.

Интересно, что ntoskrnl даже две экспортирует - RtlRandom и rand.
_srand proc near arg_0:dword
    mov eax, [esp+arg_0]
    mov dword_474910, eax
    retn
_srand endp

_rand proc near
    mov eax, dword_474910
    imul eax, 343FDh
    add eax, 269EC3h
    mov dword_474910, eax
    sar eax, 10h
    and eax, 7FFFh
    retn
_rand endp


_srand, видимо, устанавливает начальный seed и пихает его в dword_474910, а _rand уже генерит случайное число.
После этого используешь свой X в качестве модуля как предыдущие ораторы советовали.

На борде http://board.win32asmcommunity.net/ эта тема хренову тучу раз поднималась. Поищи там.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.044