слyчайно 0-1
- From
- Alex Astafiev (2:5000/228.16)
- To
- Stanislav Aranovsky
- Date
- 2002-04-30T17:50:58Z
- Area
- RU.ALGORITHMS
Здравствуй Stanislav, ничего, если я тут на диванчик прилягу?
SA> Подскажите алгоpитм генеpации слyчайного числа в пpеделах только 0-1,
SA> котоpый pаботал бы быстpее rand(). Едиственное, что пpиходит в головy
SA> - один pаз генеpить динное число, а потом пpосто пpобегать его по
SA> битам, после чего генеpить число заново.
Это неправильно в общем случае. Большинство датчиков ПСЧ гарантирует заданые
дисперсию и распределение для выходных чисел в целом, т.е. для но не для битов
этих чисел при их представлении в машинной форме. Возьмем линейный конгруэнтный
генератор:
x(i+1) = (x(i) * A) mod B + k
так вот, у него старшие биты шумят очень хорошо, а младшие чрезвычайно плохо.
но есть псч на основе сдвигов, они тебя устроят.
SA> Можно ли пpидyмать что-нить
SA> быстpее?
На ассемблере 680x0 rand()
rol.l d0,d0
addq.l #x,d0
или
divs.w #$4433,d0
swap d0
на X86 асме rand()
как
seed dw 0
mov eax[seed]
mov edx,eax
shl eax,2
add eax,edx
inc eax
mov[seed],eax
and eax,0x80000000...
---
* Origin: Alex Raider/ Flash inc. 1992-2002 (2:5000/228.16)