Цитата(Dr.NoA @ Sep 1 2011, 15:06)

Что-то я не пойму следующее. Если автору темы требуются 8-битные случайные числа, то чем не устраивает 8-битный генератор с периодом 2^8-1?
Т.е. через 255 шагов можно точно предсказать следующее значение rnd

это абсолютно не приемлемо для меня.
Цитата(Dr.NoA @ Sep 1 2011, 15:06)

Какой смысл тратить ресурсы на 32-разрядный генератор, а потом брать только 8 бит, если все равно выходные значения в лучшем случае будут иметь период 2^8-1
ошибаетесь
Цитата(Dr.NoA @ Sep 1 2011, 15:06)

(при этом еще большой вопрос на счет периода и свойств распределения этого выходного байта)?
Если тесты на "случайность" одобряют этот алгоритм значит состояние любого бита тоже случайно и думаю что сколько бы бит из 32-х не взять (хоть даже 1) все должно быть случайно.
Правда смутные сомнения терзают

поэтому решил взять 16 бит.
По большому счету мне нужен рнд генератор в заданном диапазоне ( к примеру 0-23 , 0-75 , 0-300 и т.д.)
Реализовать нужно на асме.
Есть подпрограммы умножения 16b х 16b = 32b, и деление сделаю вычитанием.
Хочу вот так сделать (поправте если ошибаюсь или перемудрил чего):
1. беру любые 16 бит XORSHIFTa
2. умножаю на 10000, получаю 32-х битное число.
3. делю это на 65536 (>>16) получаю случайное число в диапазоне 0 - 9999
4. умножаю на максимальное значение диапазона
5. делю это все на 10000