Page 1 of 1

Никто не пытался написать нормальный рандом?

Posted: 2010-12-05 20:52:26
by GMX
Собсно, сабж. Встроенный uo.random() имеет явные недостатки.

Code: Select all

                   k=uo.random(50)-25
                   j=uo.random(50)-25

В девяти случаях из десяти k будет равно j.
Возникла мысль, можно ли реализовать рандом силами скриптинга. Никто раньше об этом не задумывался?

Re: Никто не пытался написать нормальный рандом?

Posted: 2010-12-06 00:49:54
by Sirocco
:idea: бери число с этого сайта: http://www.random.org/

Re: Никто не пытался написать нормальный рандом?

Posted: 2010-12-06 08:34:36
by GMX
Sirocco, добрый ты!

Re: Никто не пытался написать нормальный рандом?

Posted: 2010-12-06 15:14:44
by GMX

Code: Select all

SCRFUN(Random)
{
Table->SetType(Result,T_Number);
Table->SetNumber(Result,0);
if(ParamCount<2||Table->GetType(Params[0])!=T_Number) return 0;
int n=Table->GetNumber(Params[0]);
if(n<0) return 0;
srand(GetTickCount());           <============ вот она засада!!!
Table->SetNumber(Result,rand()%n);
return 0;}

В связи с этим получается необходимо между двумя последовательными запусками функции Uo.random() делать wait(), причем довольно большой. Пойду попробую. :)