码迷,mamicode.com
首页 > 编程语言 > 详细

C++生成随机数

时间:2015-06-29 11:35:41      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:

有时候,写程序会需要用到随机数。我们人可以真正根据要求每次都产生不同的随机数,然而计算机不是人,它需要通过相应的算法生成随机数。

 

1、生成随机数

在C++中提供了生成随机数的函数rand(),rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。

技术分享

运行结果如下:

技术分享

看上去结果是不错的,然而当我们多次运行该程序时,每次运行的结果都是一样的。这样,这样的随机数已经没有意义。

 

2、生成真正的随机数

  为什么上面的程序每次生成的随机数都是一样的呢?因为,每次调用rand()生成随机数的时候,都需要一个随机数种子,当未指定随机数种子时,随机数种子总是取1,也就导致每次生成的随机数是一样的。

  因此,只要我们每次设置不同的随机数种子,就可以生成不可预测的随机数了。在计算机中,每时每刻的时间时不同,我们可以很方便地将系统的时间设置为随机数的种子。在C++中是通过函数srand(unsigned int seed)来设置种子的。获取当前系统中的时间可以用time(0),time(0)或者time(NULL)返回的是系统的时间(从1970.1.1午夜算起),单位:秒。

技术分享

这样,每次生成的随机数都是不同的。

 

3、生成0~N范围内的随机数

有时候,我们需要0~N范围内的随机数,在前面的例子中,我们都是生成了0~RAND_MAX的随机数。想想通过什么办法可以将其转换成0~N范围内的随机数呢?

答案就是:求余。任意数字对N求余,其余数是不是就落在了0~N内呢?

技术分享

C++生成随机数

标签:

原文地址:http://www.cnblogs.com/acode/p/4606963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!