C++ 生成随机数

Posted edwardzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 生成随机数相关的知识,希望对你有一定的参考价值。

用c++写了个蚁群算法,发现用到c++随机数这里还是问题多多,下面就来总结一下:

首先调用rand()函数可以生成一个0-RAND_MAX之间的随机数,RAND_MAX的值为32767;

然后假设我输出一个rand()之后,重新编译运行代码,这个值不会变,

想要得到一个新的随机数,这里就要用到随机数种子初始化函数srand()

一般都是选择系统时间作为种子

即srand((unsigned int)time(NULL))

下面上个简单的代码

#include<stdio.h>
#include<stdlib.h> 
#include<time.h>
#include<conio.h>
#include<iostream>
#define N 10	
#define M 1010	
using namespace std;
int main()
{
	double num,i;
	srand((unsigned int)time(NULL));//产生随机数的种子 
	cout<<RAND_MAX<<endl;
	for(i=1;i<=N;i++)
	{
		num= (double)(rand()%10000)/10000;//产生随机数 
		cout<<num<<endl;
	}

} 

 注意千万不能把srand函数放到循环体里面,如下:

for(i=1;i<=N;i++)
	{
		srand((unsigned int)time(NULL));//产生随机数的种子 
		num= (double)(rand()%10000)/10000;//产生随机数 
		cout<<num<<endl;
	}

 这样会输出N个相同的值(当N不是很大的时候),因为做N次循环的时间太短了,所以相当于给这N个数都初始化了相同的种子

 最后就是如何生成大于RAND_MAX的随机数的问题

 似乎不能直接修改宏定义,所以目前还没有想到解决的方法

以上是关于C++ 生成随机数的主要内容,如果未能解决你的问题,请参考以下文章

Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗

C++ 生成随机数

C++生成随机数的方法总结

c++中产生不重复的随机数

结对编程——随机生成四则运算程序

C++随机数