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

C++ 生成随机数

时间:2019-04-27 19:33:48      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:fine   解决   千万   初始   for   clu   随机   ++   随机数   

用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++ 生成随机数

标签:fine   解决   千万   初始   for   clu   随机   ++   随机数   

原文地址:https://www.cnblogs.com/EdwardZhang/p/10779825.html

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