level 11
“伪随机”是指计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的,这个结果其出现的概率是100%。Random函数是以时间“毫秒”级做为基础参数计算得来的结果,就是说如果按当时情形重来一次,结果依然固定不变。
计算机中“伪随机”之代码解释(Delphi版):
假如想在0~99的整数之间得到任意“随机”数值
可用Random(100)函数来取得
代码如下:
var
I:Integer;
begin
Randomize;
I:=1+Random(100);
ShowMessage(IntToStr(I));
end;
“Randomize”是重点,它是以计算机当前时间(毫秒级)来初始化随机种子“RandSeed”的
原型为:
procedure Randomize;
{$IFDEF MSWINDOWS}
var
Counter: Int64;
begin
if QueryPerformanceCounter(Counter) then
RandSeed := Counter
else
RandSeed := GetTickCount;
end;
也可以不用当前时间为种子,而自行指定随机种子“RandSeed”,
这样就非常明显的看到并证实了了计算机中的“伪随机”是怎样工作的
任意指定随机种子值,如果是12,那么结果就必为38;如果指定种子为13,结果必为41;代码如下:
var
I:Integer;
begin
RandSeed:=12;
I:=1+Random(100);
ShowMessage(IntToStr(I));
end;
2013年05月17日 13点05分
1
计算机中“伪随机”之代码解释(Delphi版):
假如想在0~99的整数之间得到任意“随机”数值
可用Random(100)函数来取得
代码如下:
var
I:Integer;
begin
Randomize;
I:=1+Random(100);
ShowMessage(IntToStr(I));
end;
“Randomize”是重点,它是以计算机当前时间(毫秒级)来初始化随机种子“RandSeed”的
原型为:
procedure Randomize;
{$IFDEF MSWINDOWS}
var
Counter: Int64;
begin
if QueryPerformanceCounter(Counter) then
RandSeed := Counter
else
RandSeed := GetTickCount;
end;
也可以不用当前时间为种子,而自行指定随机种子“RandSeed”,
这样就非常明显的看到并证实了了计算机中的“伪随机”是怎样工作的
任意指定随机种子值,如果是12,那么结果就必为38;如果指定种子为13,结果必为41;代码如下:
var
I:Integer;
begin
RandSeed:=12;
I:=1+Random(100);
ShowMessage(IntToStr(I));
end;

