VC获取一定范围内的随机数.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC获取一定范围内的随机数VC获取一定范围内的随机数

VC获取一定范围内的随机数?一、C中不能使用random函数random函数不是ANSI C标准不能在gccvc等编译器下编译通过。可改用C下的rand函数来实现。1、C标准函数库提供一随机数生成器rand返回0-RAND_MAX之间均匀分布的伪随机整数。RAND_MAX必须至少为32767。rand函数不接受参数默认以1为种子即起始值。随机数生成器总是以相同的种子开始所以形成的伪随机数列也相同失去了随机意义。但这样便于程序调试 2、C中另一函数srand可以指定不同的数无符号整数变元为种子。但是如果种子相同伪随机数列也相同。一个办法是让用户输入种子但是仍然不理想。 3、比较理想的是用变化的数比如时间来作为随机数生成器的种子。time的值每时每刻都不同。所以种子不同所以产生的随机数也不同。 //C随机函数VC program include stdio.h include iostream include time.h using namespace std define MAX 100 int mainint argccharargv srandunsignedtimeNULL//srand函数产生一个以当前时间开始的随机种子.应该放在for等循环语句前面不然要很长时间等待 forint i0i 10i cout randMAX endl//MAX为最大值其随机域为0MAX-1 return 0 二、rand的用法 rand不需要参数它会返回一个从0到最大随机数的任意整数最大随机数的大小通常是固定的一个大整数。这样如果你要产生010的10个整数可以表达为 int Nrand11 这样N的值就是一个010的随机数如果要产生110则是这样 int N1rand11 总结来说可以表示为 arandn 其中的a是起始值n是整数的范围。arandb-a1就表示ab之间的一个随机数若要01的小数则可以先取得010的整数然后均除以10即可得到随机到十分位的10个随机小数若要得到随机到百分位的随机小数则需要先得到0100的10个整数然后均除以100其它情况依 此类推。 通常rand产生的随机数在每次运行的时候都是与上一次相同的这是有意这样设计的是为了便于程序的调试。若要产生每次不同的随机数可以使用srandseed函数进行随机化随着seed的不同就能够产生不同的随机数。 如大家所说还可以包含time.h头文件然后使用srandtime0来使用当前时间使随机数发生器随机化这样就可以保证每两次运行时可以得到不同的随机数序列只要两次运行的间隔超过1秒。 _ 要怎么样才能真正产生有效的随机数 工作原理如下 1首先给srand提供一个种子它是一个unsigned int类型其取值范围从065535 2然后调用rand它会根据提供给srand的种子值返回一个随机数在0到32767之间 3根据需要多次调用rand从而不间断地得到新的随机数 4无论什么时候都可以给srand提供一个新的种子从而进一步随机化rand的输出结果。 因为srand函数是一个随机数产生函数其意思就是指C语言里的随机数都是由它来控制产生的如果在应用srand函数之前就用随机函数rand则相当于使用了srand1 而将srandunsignedtimeNULL这条语句放在了for循环里即是用了srandunsignedtime0故此句语句不变的话产生的随机数就不变 C语言随机函数总结rand函数 原型int randvoid 功能产生从0到RAND_MAX0x7fff之间的随机数。 头文件stdlib.h 例 include stdio.h include stdlib.h int main int k krand printfdnk return 0 2srand函数 原型void srandunsigned seed 功能产生随机数的起始发生数据和rand函数配合使用 头文件stdlib.h time.h 例 include stdio.h include stdlib.h include time.h void main time_t t srandunsignedtimet printfdnrand0 这时运行程序会发现每次产生的随机数都不一样。这是因为这里采用了时间作为种子而时间在每时每刻都不相同所以就产生了随机的随机数了。所以要想产生不同的随机数在使用rand之前需要先调用srand。 _ 伪随机数生成及在VC中的实现 摘要伪随机数在计算机软件设计中有很广泛的用途。本文介绍了基于数学方法的利用计算机产生伪随机数的一种方法即线性同余法任何伪随机数的产生都是运用递推的原理来生成的。以及在Visual C环境中产生伪随机数的两个重要函数rand和srand函数正确地使用这两个函数

文档评论(0)

kxiachiq + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档