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)