如何产生一组随机数?(20分)

  • 主题发起人 moutocean
  • 开始时间
M

moutocean

Unregistered / Unconfirmed
GUEST, unregistred user!
如何产生一组随机浮点数?要取数据范围很宽.
 
如果要求不是很高的话,
Delphi自己有产生随机数的函数

function Random [ ( Range: Integer) ];
返回一个0<=X<Range的随机数,
如果不指定Range返回0<=X<1的实型随机数

初次使用前注意调用Randomize,以初始化随机数产生器。
 
李颖.你好,'调用Randomize,以初始化随机数产生器',有何作用?
 
如果你不调用randomsize,两次运行的结果是一样的,
randomsize是与时钟相关的,会产生不同的随机数
 
是随机数种子,呵呵,根据时钟来的,根据当前时钟,
做复杂的计算,实际上也不随即。

随数算法有许多,找资料吧
 
本人在编程中也用到随机数,但Delphi的随机数函数有一个缺陷,即每次
执行程序时,随机数都是一样的(好象是4、17、26...),这那是随机数啊!
本人的解决办法为:

...
randomsize;
Rando(1000);
...
然后再使用Delphi提供的随机数函数,即可达到随机数应用的目的。
 
可以直接取当前时钟的毫秒值。
 
James,你的情况是因为没有初始化随机数(Randomize)

3h,你的办法不行,当需要连续取得大量随机数时,
程序执行得太快,就是连续的数值了,甚至是一样的。
就算没有这个问题,毫秒值也只有1000种情况。
 
Hi,李颖
初始化了也不行. 好在问题不是太碍事,将就了。
 
欲得到一组随机数, 通常会遇到两种问题. 1.随机数不随机, 每次都相同; 2.得到的
一组数中有重复的数.

对于第一中情况, 用randomize基本上能够解决.

第二种情况我的时候我的办法: 我先建立一个堆栈(数组+堆栈位置), 用一个Whild循
环来得到随机数, 每次得到一个随机数后, 与堆栈中的数依次比较, 如果无重复则将
新的数放到堆栈中, 否则重新生成一个随机数, 直到堆栈满了为止. 用此方法能够保
证得到一组不重复的随机数.
 
20分的问题有这么多人来,moutocean你也够赚了。
 
多人接受答案了。
 
顶部