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

бери число с этого сайта:
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(), причем довольно большой. Пойду попробую.
