核心提示:一、常用的获取真正随机数的代码 我们都知道在Delphi中获取随机数的函数是Random(),比如我们要取得1-100的随机数,一般是使用Random(100)+1,但使用这个函数取的随机数,...
一、常用的获取真正随机数的代码
我们都知道在Delphi中获取随机数的函数是Random(),比如我们要取得1-100的随机数,一般是使用Random(100)+1,但使用这个函数取的随机数,其实只是个伪随机数,这是因为Random函数是根据随机种子采用固定算法取得的随机数,在程序运行中会导致每次运行会取得与上次运行相同的数字。为此,Delphi提供了重置随机种子的语句Randomize,这样在每次使用Random之前都运行一次Randomize,就可以取得真正的随机数。
代码参考如下:
Randomize;
Result:=Random(100)+1;//Random(100)所取得的值为>=0 而<100的值
二、我用的获得真正随机数的代码
这个代码其实是在上面的代码变化而来的,也许有人会觉得似乎没有必要,但这只是我探求更加随机数的方法,有点类似C语言以当前时间重置随机数的方法,我的思路是以当前时间与较大范围内的随机数相加作为弧度计算正弦值,这样取整再获取所需范围的随机数。但这里需注意的是,由于弧度取正弦,这个值与理论上-1<=x<=1还是有差别的,可以说其值在0<|x|<1范围内。
我的代码如下:
Randomize;
Result:=Trunc(Int(Abs(Sin(Integer(SecondOfTheYear(Now))+Random(10000))*100))+1);