Главная страница
    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.46 MB
Время: 0.01 c
6-89438
Dennisius
2003-08-24 21:16
2003.10.27
все компьютеры в Domain


1-89248
Egor
2003-10-14 20:12
2003.10.27
Требуется написать программу на лицензионном Delphi 6


14-89524
ИМХО
2003-10-08 15:05
2003.10.27
Hotmail.com


1-89221
-=GaLaN=-
2003-10-15 11:35
2003.10.27
OnKeyPress


1-89266
x404
2003-10-17 00:41
2003.10.27
горизонтальная надпись на Tabsheets





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский