[编程]C++产生随机数


#include
#include
using namespace std;

int main(int argc, char **argv)
{
random_device rd;
for(int i = 0 ; i < 100 ; i++)
{
cout << rd()%35 << " " ;//产生0-34之内的随机数
}
std::cout << std::endl;
return 0;
}

网上的文章一般都使用c语言中的rand()和srand()方法,或者使用C++11里面的default_random_engine e方法;可是即使是default_random_engine e也需要给它一个”初使化种子”.可以是default_random_engine e(1)这样的数据.当第一个种子确定的时候,以后的值也就确定了,这样程度的随机数真是伪得够可以了.玩具级的.即使是使用default_random_engine e(time(0))这样初使化也不行,秒级应用自然无所谓.如果使用在毫秒级应用,就会产生相同的随机数.相同的随机数自然不叫随机数.
而上面提到的random_device rd方法,就是使用机器硬件的某些数据作为随机种子,其随机化程度自然是相当高的.如果配合default_random_engine e(rd())方法,就非常不错了.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

CAPTCHA