CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

怎样产生真正的随机数?

楼主poplv(凭海临风)2002-09-20 15:36:50 在 C/C++ / C语言 提问

而非伪随机数。  
   
  如有不同于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

相关问题

  • 怎样产生真正的随机数?
  • 怎样产生真正的随机数?
  • 怎样产生随机数?
  • 怎样按概率产生随机数?
  • c#.net中怎样产生随机数
  • DEL中怎样产生随机数?
  • 怎样产生一随机数,请教
  • 请问怎样产生随机数?
  • 请问:怎样产生出现概率不同的随机数?
  • 请问各位大侠:怎样按概率产生随机数??

关键词

  • 算法
  • 计算机
  • 随机数
  • 产生
  • rand
  • random

得分解答快速导航

  • 帖主:poplv
  • ice1010
  • zhuzhu830829
  • JustHere
  • alexxing
  • sjd163
  • donew
  • leafstream

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo