Re: слyчайно 0-1
- From
- Sergey Andrianov (2:5020/1507.400)
- To
- Stanislav Aranovsky
- Date
- 2002-05-06T22:54:34Z
- Area
- RU.ALGORITHMS
Здравствуй, Stanislav!
Однажды 29-Apr-02 в 02:08 Stanislav Aranovsky (2:5030/1044.29)
написал All по поводу
-=- слyчайно 0-1 -=-
SA> Подскажите алгоpитм генеpации слyчайного числа в пpеделах только 0-1,
SA> котоpый pаботал бы быстpее rand(). Едиственное, что пpиходит в головy -
SA> один pаз генеpить динное число, а потом пpосто пpобегать его по битам,
SA> после чего генеpить число заново. Можно ли пpидyмать что-нить быстpее?
Можно.
Стандартный rand() сначала генерирует число в достаточно широком диапазоне, а затем делением приводит диапазон к требуемому. В случае, когда требуемый диапазон равен степени двойки, вместо долгого деления можно использовать маску со сдвигом.
В свое время для программы, тестирующей время произвольного доступа к памяти, я подбирал наиболее быстро работающий ГПСЧ для задания адреса в памяти, по которому следует делать очередную выборку. При этом сумел добиться того, что ДПСЧ работал в несколько раз быстрее (на современных процессорах более чем на порядок), чем происходит выборка из ОЗУ. Если интересует исходник - в мыло, т.к. я сомневаюсь, что ассемблерные изыски попадают в топик этой эхоконференции.
До свидания, в 22:48 MSK
Sergey
---
* Origin: Sergiev Posad (2:5020/1507.400)