当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

c/C++中随机数的设置[VC/C++编程]

赞助商链接



  本文“c/C++中随机数的设置[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

random和rando多可以产生随机数,包含在stdlib.h里.

random函数不是ANSI C尺度,不能在gcc,vc等编译器下编译通过.但在C语言中int random(num)可以这样利用,它返回的是0至num-1的一个随机数. 可改用C++下的rand函数来实现.

1、C++尺度函数库供应一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数. RAND_MAX必须至少为32767.rand()函数不承受参数,默许以1为种子(即起始值). 随机数生成器老是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义.(但这样便于程序调试)

2、C++中另一函数srand(),可以指定差别的数(无标记整数变元)为种子.但是假如种子相同,伪随机数列也相同.一个办法是让用户输入种子,但是仍旧不睬想.

3、对比抱负的是用改变的数,比方时间来作为随机数生成器的种子. time的值不时刻刻都差别.所以种子差别,所以,产生的随机数也差别.

rand应用问题与解答:

问:为什么有时rand()用它都是同一个数?若何产生一个真正随机数?

答:之所以rand()每次的随机数都一样是因为rand()函数利用不精确.各种编程语言返回的随机数(切当地说是伪随机数)实际上都是按照递推公式计算的一组数值,当序列充足长,这组数值近似满意均匀分布.假如计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完好相同的.这个特点被有的软件操纵于加密和解密.加密时,可以用某个种子数生成一个伪随机序列并对数据举行处理;解密时,再操纵种子数生成一个伪随机序列并对加密数据举行复原.这样,关于不知道种子数的人要想解密就需求多费些事了.当然,这种完好相同的序列关于你来说是非常糟糕的.要办理这个问题,需求在每次产生随机序列前,先指定差别的种子,这样计算出来的随机序列就不会完好相同了.你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间普通是差别的,这样便可以保证随机性了.你也可以利用srand函数来人为指定种子数.Windows 9x/NT的游戏FreeCell就答应用户指定种子数,这样用户假如一次游戏没有成功,下次还可以以一样的发牌后果再玩一次.

例子:

以下为引用的内容:

#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
void main()
{

srand( (unsigned)time( NULL ) ); //注意不要放在for循环里,不然产生的数是同一个数.
for(int i=0;i<100000;i++)
{

cout<<rand()<<endl;
}
}


  以上是“c/C++中随机数的设置[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 操纵 .htaccess 启用 gzip 压缩静态内容
  • 高配置机械在CC攻击需求做的调整
  • Ubuntu proc gcc典型问题
  • Ubuntu 10.10安装低版本gcc和g++编译器
  • Windows2003下配置 Apache2.2 + MySQL 5 + php5 + ZendOptimizer3.3 + .htaccess重写
  • LNMP上进级布置PHP加快器eAccelerator
  • 在Access2007"快速拜候工具栏"增添更多号令
  • Access2007表的数据表视图和计划视图
  • access violation at address的问题
  • VB用Access数据库成立用户登录
  • Web服务器若何防CC攻击
  • Asp 防备CC攻击模块 (Anti-CC.asp)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .