怎样产生真正的随机数?
而非伪随机数。
如有不同于rand()和random()的,算法亦可!
问题点数:15、回复次数:25Top
1 楼JennyVenus()回复于 2002-09-20 15:40:30 得分 0
不会
帮你up,原先学basic的时候有一个例程,能够保证在很多个随机数中不重复Top
2 楼freezingfire(让美梦来得更猛烈些吧)回复于 2002-09-20 15:55:39 得分 0
上个月在书店看见名著《计算机软件的科学与艺术》,专门谈到随机数的生成问题。不过要是你高等数学不是每次都考90分以上的话,还是不要看了。Top
3 楼KAMI(焦面包)回复于 2002-09-20 16:17:21 得分 0
用计算机产生真正的随机数是不可能的,除非用来产生随机数的种子是真正随机的,这是做不到的
现在比较流行的办法是采用系统时间作为随机数种子Top
4 楼KAMI(焦面包)回复于 2002-09-20 16:19:29 得分 0
采用这种做法,满足一般的应用是没问题的Top
5 楼lifxue(纸上谈兵)回复于 2002-09-20 16:36:00 得分 0
没有真正的随机数,够用就行了Top
6 楼sjd163(sjd163)回复于 2002-09-20 16:40:43 得分 0
本人有一种产生随机数的方法.是用顺序数组.随机排列而成.不知算不算真的.Top
7 楼ice1010(Azrael)回复于 2002-09-20 16:45:05 得分 3
srand( (unsigned)time( NULL ) );
for( i = 0; i < 100;i++ )
{
cout<<rand()<<endl;;
}
这样利用时间来产生随机数的方法应该是很好的,你可以试一下.Top
8 楼zhuzhu830829(猪猪)回复于 2002-09-20 16:47:18 得分 2
可以用硬件方法Top
9 楼JustHere(可乐)回复于 2002-09-20 17:23:19 得分 2
#indclude"time.h"
srand(time(NULL));
int x;
x=rand();
经典的《c程序设计教程》也是这样做的Top
10 楼ccnuxjg()回复于 2002-09-20 17:32:37 得分 0
我认为计算机作不出来真正的随机数Top
11 楼alexxing(赤铸)回复于 2002-09-20 17:48:28 得分 2
计算机本事是个确定性的系统,原理上就不可能产生真正的随机数
但是,可以利用外界的随机性的因素:例如程序开始执行的时间、用户击键的时间或速度等。但这样也只是“提高”随机性,至于人的行为是否是“真随机”,这就需要综合 N 门学科的知识进行严格证明了 :)Top
12 楼sjd163(sjd163)回复于 2002-09-20 17:56:19 得分 2
随机数基本评定:
1 平均值等于中值。
2 无重复
Top
13 楼Toon(VCToon)回复于 2002-09-20 18:04:33 得分 0
计算机好像无法得到真正的随机数!!!Top
14 楼Lodger007(Groov0V)回复于 2002-09-20 18:26:29 得分 0
不管是在C,还是在C++中,都可以用:
#include <time.h>
..........
srand(time(0))
a=rand()
这样每次产生的随机数都会不同.Top
15 楼null2002(野指针)回复于 2002-09-20 18:32:59 得分 0
哈哈,建议你做个彩票机,把它和电脑连在一起,想要多随机都行。Top
16 楼dowms22(阿吹)回复于 2002-09-20 18:36:01 得分 0
同意Lodger007(沧浪客) 的Top
17 楼donew(冰岛)回复于 2002-09-20 18:48:56 得分 2
目前计算机上最常用的随机数产生方法是;线性同余法。
即
f(x+1)=(a*f(x)+b)mod m;
其中m一般去2的32次方减一,因为这是一个质数。
显然该式将产生0到m的伪随机数,然后重复。
计算机是不可能产生绝对的随机数,不过如果变化的取a,b的值,可以却的相对好的随机数Top
18 楼JennyVenus()回复于 2002-09-20 18:58:45 得分 0
我想真正的随机数恰恰能够重复,否则怎么叫随机,这次是1,下次肯定不是1,这也不太合理呀Top
19 楼JennyVenus()回复于 2002-09-20 19:00:40 得分 0
有一个数学命题,一付扑克洗成绝对均匀的时候,就是原来的次序,而且被证明成立了。Top
20 楼Autom(见色生情)回复于 2002-09-20 19:03:12 得分 0
什么叫算法?算法要有确定的输出。如果一个算法能够产生真正的随机数,那这个算法就不是正确的算法。Top
21 楼JennyVenus()回复于 2002-09-20 19:08:50 得分 0
对了,写一个错误的算法,比如用现有的随机数区内村的内容Top
22 楼donew(冰岛)回复于 2002-09-20 19:09:55 得分 0
对于计算机产生随机数的程序
如果初始状态可以重复,那么随机数列也是与先前相对应的。
Top
23 楼datougui(一个梦)回复于 2002-09-20 19:35:32 得分 0
用计算机的时钟 不知算不算Top
24 楼poplv(凭海临风)回复于 2002-09-24 12:30:05 得分 0
我用TC库函数中RANDOM()产生的随机数都是0,每次都初始化!
怎样快速产生一个小范围内的随机数,如1-10?我用RAND()要很长时间!Top
25 楼leafstream(叶飘扬)回复于 2002-09-24 12:48:46 得分 2
我想你的程序写法有问题
tc中的random使用初始化时,产生的是一个0……1中间的随机小数
你将其赋值给整数的话或取整,得到的就是零。
产生10以内整数: int(random()×10),最简单的算法Top




