Random是个随机函数,我用它产生数百个数据,当然,每次运行的时候每个数据都是不一样的,但当我关闭程序后再打开,奇怪的是,
程序第一次运行产生的随机数组和上次程序第一次产生的随机数组完全相同,程序第二次运行产生的随机数组又和上次程序第二次产生的随机数组完全相同.也就是每次程序启动后产生随机数组总是完全一样的.Random采用的到底是什么机理?怎样才能产生真正的随机数?
程序第一次运行产生的随机数组和上次程序第一次产生的随机数组完全相同,程序第二次运行产生的随机数组又和上次程序第二次产生的随机数组完全相同.也就是每次程序启动后产生随机数组总是完全一样的.Random采用的到底是什么机理?怎样才能产生真正的随机数?
解决方案 »
- 两个问题:1。如何点击DBGRID的某单元格返回对应的字段名?2。。。。
- delphi能做出语音系统吗
- 急~关于TWebBrowser的问题,高分求教!
- m_SizeRec、MaxDataRow的报错?
- 挑战高手:delphi 下API 函数 串口编程 ————在线等待!!!
- 如何将memo的内容赋给给access中的备注型字段,在线等待
- 免费软件OpenOffice挑战微软(可以打开Word文档或保存为Word文档)
- 目录、文件操作,进行拷贝复制,实现备份功能。。。。。
- 如何将原生ADO记录集绑定到数据感知控件?
- 我想编一个储存功略或文章的数据库………………
- 请问如何将Delphi写的程序在IE上执行
- 百分送上 有挑战的问题:如何实现在本地网络中的任意一台机器上运行一个程序来控制本地网络中的另一台机器,让他能或不能上网,而这台被
不过仍然不是真正的随机数
Randomize;
random 随机数
不复位的话,产生的数是一样的
The random number generator should be initialized by making a call to Randomize, or by assigning a value to RandSeed.
//生成种子
randomize;
......//取随机数
ran:=random(5); //这句话就是生成0--4中的一个随机数
//如果你想要1--5中的随机数,可以写成:
ran:=random(5)+1;
Delphi的随机数是伪随机数来的:)http://lysoft.7u7.net
Xn+1 = (aXn + b) mod c
a、b 和 c 都是质数,上一个随机数决定了下一个。
随机数的种子是根据系统时钟算出的。
Randomize //产生种子,这个种子不可见
s:=Random;//第一个
s:=Random;//第二个
...
每次调用Random得到的值是不同的
因为上一个决定下一个,实际上不是完全随机的,只是不可预测。要做到完全随机,在每次调用Random之前都调用Randomize 。