之所以rand()每次的随机数都一样是因为rand()函数使用不正确。各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的。这个特性被有的软件利用于加密和解密。加密时,可以用某个种子数生成一个伪随机序列并对数据进行处理;解密时,再利用种子数生成一个伪随机序列并对加密数据进行还原。这样,对于不知道种子数的人要想解密就需要多费些事了。当然,这种完全相同的序列对于你来说是非常糟糕的。要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。你也可以使用srand函数来人为指定种子数。Windows 9x/NT的游戏FreeCell就允许用户指定种子数,这样用户如果一次游戏没有成功,下次还可以以同样的发牌结果再玩一次。
    
    
    陈翔宇: 我按照上述方法并不能产生随机数,仅产生公差为3或4的等差数列:
    #include <stdlib.h>
    #include <iostream.h>
    #include <conio.h>
    #include <time.h>
    void main()
    {
     for(int i=0;i<100000;i++)
     {
     srand( (unsigned)time( NULL ) );
     cout<<rand()<<endl;
     }
    }
    答:你的程序是有问题的,你每产生一个随机数之前,都调用一次srand,而由于计算机运行很快,所以你每次用time得到的时间都是一样的(time的时间精度较低,只有55ms)。这样相当于使用同一个种子产生随机序列,所以产生的随机数总是相同的。你应该把srand放在循环外:
     srand( (unsigned)time( NULL ) ); 
     for(int i=0;i<100000;i++) 
     { 
     cout&lt;&lt;rand()&lt;&lt;endl; 
     }

为什么rand()每次产生的随机数都一样相关推荐

  1. C语言随机函数为什么rand()每次产生的随机数都一样

    之所以rand()每次的随机数都一样是因为rand()函数使用不正确.各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布.如果计 ...

  2. matlab rand randn 每次生成的随机数都一样的解决方案

    文章目录 问题说明 解决方案 例子 生成不重复的随机数 生成重复的随机数 结论 参考文献 问题说明 在Matlab应用中,我们经常需要用到随机数,比如rand(),randn()等函数,都是生成某一类 ...

  3. torch.manual_seed的意义为了每次得到的随机数是固定的,为了复现实验的目的

    import torch torch.manual_seed(1) print(torch.rand(2)) 运行这段代码会发现,每次得到的随机数是固定的.但是如果不加上torch.manual_se ...

  4. 用深度学习每次得到的结果都不一样,怎么办?

    http://www.sohu.com/a/150686946_116235 作者:崔静闯 神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同的结果. 初学者可能会 ...

  5. php随机整数rand和mt_rand,PHP随机数函数rand()与mt_rand()的讲解

    PHP随机数函数rand()与mt_rand()的讲解 PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:PHP生成指定范围内 ...

  6. 解决TortoiseGit每次Pull或者Push都需要输用户名密码的问题

    解决TortoiseGit每次Pull或者Push都需要输用户名密码的问题 每次提交代码到仓库都要输入用户名和密码,王同学差点哭了 忍住 忍住 不能哭 不能哭 解决方法如下: Right click ...

  7. c语言rand生成1 100随机数,c语言生成1~100随机数

    C语言如何srand和rand函数产生10个1-100内的随机数 10个是任意的,也可能是100个,1-100也是任意的...CSS布局HTML小编今天和大家分享解,详细的有追加 需要准备的材料分别有 ...

  8. wps表格宏被禁用如何解禁_(wps表格怎么设置宏)为什么每次打开excel文件都要提示启用或者禁用宏?...

    打开Excel时出现"该工程中的宏被禁止",怎么启用宏? 启用宏的方法(2003 版): 工具 → 宏 → 安全性 → 安全级 → 中 关闭Excel → 重新打开 → 启用宏 - ...

  9. 寒假的时候,小明同学要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上。小明可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友。

    寒假的时候,小明同学要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上.小明可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友. 比如有4个朋友,对应 ...

最新文章

  1. android studio 去掉标题栏的简单方法
  2. Android 中文 API 文档 (45) —— AbsoluteLayout.LayoutParams
  3. 海思 core 电压动态调整
  4. 系列(五)—MySql
  5. oracle中12523,【Oracle】静态监听导致的ORA-12523错误
  6. 嵌入式通过绑定实现双网卡冗余
  7. 如何退出python程序_python怎么退出程序
  8. HNU 19.迭代电路习题
  9. Laravel系列教程一:安装及环境配置
  10. Visual Studio 2019密钥
  11. Luogu2627 修剪草坪
  12. 方便快速地创建新浪微博表情选择对话框——jQuery Sina Emotion
  13. 【操作系统实验】设备驱动(Linux环境下)
  14. 从文件结构认识HLS
  15. 携手独角兽企业,微软正在用AI打造更美好的未来
  16. JavaScript JS 如何定义多行文本
  17. python pandas 怎么判断一天是否为工作日+计算距离特定时间之间的天数
  18. 静态库,动态库是啥,有啥区别(静态函数库/动态函数库)
  19. android 绘画笔迹回放_一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置与流程...
  20. tomcat配置静态资源访问

热门文章

  1. 23种设计模式——建造者模式
  2. Spring源码理解
  3. 移动浏览器内核及连接数
  4. nas服务器上文件恢复,nas文件恢复
  5. JavaScript学习笔记及案例总结
  6. 做网站的人必须遵守的N大定律
  7. 数字认证公司的bjca证书报错原因,垃圾产品
  8. 关于光模块,看这一篇就够啦!
  9. 极光将赴美上市,哈米宣布倒闭,然:又有8家公司拿到融资!
  10. 一个人越想赚钱,就越要改掉这3个习惯,否则注定穷一辈子