Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Люди, как получить более менее случайное число?   Найти похожие ветки 

 
Knight ©   (2003-10-07 06:54) [0]

А то чё-то повторов больно много в программе...

------------------------
Randomize;
while i<Arr_Length do begin
Card:=((Random(Random(10001)+Random(Random(101))) mod 2)=0);
------------------------


 
MBo ©   (2003-10-07 07:13) [1]

Randomize - один раз (при старте программы)

Random(Random(101)) - такая экзотика с квадратичным законом для чего???


 
vidiv ©   (2003-10-07 07:22) [2]

Random(10001) mod 2 = 0


 
Knight ©   (2003-10-07 08:19) [3]

>> MBo © (07.10.03 07:13) [1]
> Randomize - один раз (при старте программы)
Попробую...

> Random(Random(101)) - такая экзотика с квадратичным законом
> для чего???
Чтоб хитрее было :)


 
MBo ©   (2003-10-07 08:23) [4]

>Чтоб хитрее было :)

Непонятно, к чему сводится эта хитрость и навороты при получении булевских значений


 
MVova ©   (2003-10-07 08:30) [5]

Random(Random(101)) приводит к тому, что чем болише число тем с меньшей вероятностью оно будет появлятся.


 
Knight ©   (2003-10-07 08:32) [6]

Последовательность больно часто повторяется... не спорю, может из-за Randomize, я почему-то думал, что он производит инициализацию перед использованием Random по системным часам, если логически, то получается, что чем чаще вызывается, лучше получается... а вот то что он вызывается один раз перед всеми вызовами Random, как-то недочитал... :)


 
Fantasist ©   (2003-10-07 08:56) [7]

Приходит один программист к другому:
- Слушай, мне надо сгенерировать случайное число...
- Семнадцать!


 
NailMan ©   (2003-10-07 09:49) [8]

Я в игрушке делаю такой рандомайзер:

Procedure MyRandomize;
begin
asm
push eax
push edx
RDTSC
mov dword ptr randseed[0],eax
pop edx
pop eax
end;
end;


Не привязывается к часам, а привязывается к процессору для инициализации RandSeed. Далее либо обычным Random либо RandG в зависимости что мне нужно сделать. Да! MyRandomize вызываю каждый раз когда нужно сделать какой-то рандом или группу рандомов.

Для булеанов сделал такой генератор:

Function RandomNormalBool:Boolean;
var z,p:integer;
begin
myrandomize;
p:=RandomRange(64,255);
Z:=Random(65536);
If Z in[64..p] then result:=false else result:=true;
end;


А для вектора такой:

Function RandomVector:TD3DVector;
var v:td3dvector;m:td3dmatrix;
Begin
MyRandomize;
v.x:=D3DXToradian(Randg(180,180));
v.y:=D3DXToradian(Randg(180,180));
v.z:=D3DXToradian(Randg(180,180));
D3DXMatrixRotationYawPitchRoll(m,v.x,v.y,v.z);
v:=d3dxvector3(0,1,0);
D3DXVec3TransformCoord(v,v,m);
result:=v;
end;


;-) Веселая функция, неправда ли?



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
3-89103
explorer
2003-10-08 12:16
2003.10.27
Данные из *.db в MSSQL


14-89482
Zhouck
2003-10-03 15:57
2003.10.27
Кратчайшее расстояние. На кубе


1-89203
off
2003-10-15 13:57
2003.10.27
Как работать с TChart?


1-89262
romeo
2003-10-14 15:31
2003.10.27
Object Inspector как в Delphi - своими руками.


3-89141
Sedunov Vitaly
2003-10-07 09:10
2003.10.27
@@spid и PacketRecords