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的随机数的问题

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

原文链接: https://www.cnblogs.com/EdwardZhang/p/10779825.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ 生成随机数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/294293

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午3:42
下一篇 2023年2月15日 下午3:42

相关推荐