设为首页 - 加入收藏 - 网站地图 - RSS订阅 村姑网-www.cunguer.com
当前位置:首页 > 软件开发 > delphi > 正文

delphi随机数random,随机数种子randseed,获取不重复随机整数,随机0-1小数的方法

时间:2018-06-16 11:42:17 来源:村姑网 作者:喜欢安静 阅读:0
导读:说到delphi获取随机数,很多人可能会说直接用random取随机数就好了,其实不然,如果只是单纯的random的话,那么获得随机数是伪随机数,产生的随机数序列是相同的,就会出现重复的情况。那么,怎么获得真正的随机数呢?那就不得不说一下randseed(随机数种子)这个函数了。我们今...

说到delphi获取随机数,很多人可能会说直接用random取随机数就好了,其实不然,如果只是单纯的random的话,那么获得随机数是伪随机数,产生的随机数序列是相同的,就会出现重复的情况。那么,怎么获得真正的随机数呢?那就不得不说一下randseed(随机数种子)这个函数了。

我们今天就来详细的说一下delphi获取不重复随机数、以及获得随机整数,随机小数,获取某范围内的随机数的方法。

前面已经说了,如果单单只用random函数的话,获取的是伪随机数,会出现重复的情况,在random之前,我们就要先用randseed(),先初始化随机数种子。

randseed()位于system.pas单元,如果没有uses引用的话,要先引用。

randseed()的定义(delphi2010):

procedure Randomize;
{$IFDEF POSIX}
begin
  RandSeed := _time(nil);
end;
{$ENDIF POSIX}
{$IFDEF MSWINDOWS}
var
  Counter: Int64;
begin
  if QueryPerformanceCounter(Counter) then
    RandSeed := Counter
  else
    RandSeed := GetTickCount;
end;
{$ENDIF MSWINDOWS}

从上面代码中,我们可以看到,randseed()函数是通过GetTickCount获取操作系统启动所经过(elapsed)的毫秒数来初始化的,从而起到用随数种子打乱随机数的作用。

Random()函数的定义:

function Random [ ( Range: Integer) ]
解释:

1、产生一个0<=X<Range的随机数,如果要产生一个0-N的随机整数的话,就填写参数Range.

2、如果你需要产生一个0-1之间的随机小数的话,Range不要填写,留空。

了解了原理之后,我们开始举例说明delphi获取各种随机数的方法吧。

delphi获取0-N随机不重复的整数:

Randomize;  //先初始化随机数

a:=Random(100); //返回0-100范围内的随机数

上面的代码,就可以产生一个0-100之间随机的整数了。变量a的值为0-100之间的值。【村姑网

delphi获得0-1之间的小数:

Randomize;  //先初始化随机数

a:=Random(); //返回0-1范围内的随机数

上面的代码,就是delphi获取0-1之间随机小数的方法了,a的值是0-1之间的小数,如:

0.0650293058715761
0.142835484584793
0.393000256968662
0.24197786860168
0.646287544397637

从上面,我们可以看出,随机小数的位数是不固定的,如果需要固定小数点后的位数的话,可以用floatformat函数格式话一下。

上面,我们已经学习了随机产生0-N之间的整数和获取随机0-1之间小数的方法了。如果我们要随机获取10-N之间的整数该怎么办呢?

这就需要用到randomrange()函数了,先看一下randomrange函数的定义吧:

function RandomRange(const AFrom, ATo: Integer): Integer;

解释:randomrange返回AFrom和Ato之间的整数,AFrom开始的数值,Ato为结束的数值,下面看下例子吧。

delphi获取某个整数范围内的随机数:

Randomize;  //先初始化随机数

a:=randomrange(10,100); //返回10-100范围内的随机整数

上面的代码就可以返回一个10到100之间的随机整数了。

当然,delphi的随机数用法不止上面的这些,限于文章篇幅,本文就暂时介绍到这里,后续我们再接着介绍delphi其他随机数的使用方法。如果你觉得本文写得好,记得转载哦,转载时注明本文来自【村姑网-www.cunguer.com】,谢谢~!

《delphi随机数random,随机数种子randseed,获取不重复随机整数,随机0-1小数的方法》地址:http://www.cunguer.com/article/339.html,本文来自村姑网,您身边的IT专家 www.cunguer.com,转载请注明出处,您的支持是我们创作的源泉~!