回 帖 发 新 帖 刷新版面

主题:[转帖]如何获取随机数?

如何获取随机数?(转自 温州中学 信息中心)

随机数是指理论上没有规律可循、在指定范围内每个数的出现几率相等、无法根据之前的数来预测下一个数的数列。一般随机数生成器的基本原理是:首先初始化一个随机种子,其初始值可以是任意的整数;在每次获取随机数时,以随机种子为基础进行某种特殊的运算,获得一个随机数并返回之,然后再对随机种子进行某种运算,改变随机种子的值。这样,就可以生成许多比较随机的数,但同一个初始值的随机种子将会生成完全相同的随机数列。

Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。

Randomize过程用于初始化随机种子,其初始值取决于当前的系统时钟。

Random函数用于获取随机数.
它有两种调用形式:Random,返回一个0到1之间(不包括1)的随机实数;
Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。
另外,System单元中随机种子变量的标识符为RandSeed,你也可以手动修改它。

随机数在信息学奥林匹克中可用于随机化搜索、穷举等算法,以优化其性能,也可用于在快速排序中选择关键数,以使其快速排序算法的最坏情况没有固定的相应数列。如果你希望使用了随机数的程序对同一个输入数据能有恒定的输出结果,可以设置RandSeed为一个定值。











  

回复列表 (共4个回复)

沙发

看了过后怎么用,我还是不太清楚,,
请大虾指点一二~~~~~

板凳

TO:楼上的
program yb(input,output);
begin
randomize;
writeln(random(1000));
end.
一个产生1~1000随机整数的程序

3 楼

如果我要产生5~100的随机数呢?

4 楼

To 2:

random(1000)=[0,1000)

To 3:

[5,100)=random(95)+5

我来回复

您尚未登录,请登录后再回复。点此登录或注册