【C++】简短笔记-生成随机数

C语言中有可以产生随机数据的函数,需要添加以下头文件:

#include<stdlib.h>
#include<time.h>

另外应该在main函数开头加上

srand((unsigned)time(NULL));//生成随机数的种子

其中srand用于初始化随机种子。
然后在需要使用随机数的地方使用rand函数。
下面是一段生成是个随机数的代码:

#include <cstdio>
#include <time.h>
#include<stdlib.h>
int main()
{
	srand((unsigned)time(NULL));
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", rand());
	}
	return 0;
}

要注意的是:rand()函数只能给出[0,RAND_MAX]范围内的整数,(RAND_MAX是stdlib.h中的一个常数,不同系统环境中该常数的值有所不同),因此如果想要输出给定范围[a,b]内的随机数,需要使用rand()%(b-a+1)+a。
但这种做法只对左右端点相差不超过RAND_MAX的区间的随机数有效,如果需要生成更大的数,可以多次生成rand随机数,用位运算拼接(或者相乘),也可以随机选每一个数位的值,然后拼接成一个大整数,另一种思路:先用rand()生成一个[0,RAND_MAX]范围内的随机数,然后用这个随机数除以RAND_MAX得到一个[0,1]范围内的浮点数,最后用这个浮点数乘以范围长度b-a+1,再加上a即可,即

(int)((double)rand()/32767*(b-a+1)+a)//32767为该环境下的RAND_MAX

(以上全部内容摘自《算法笔记》)

发布了43 篇原创文章 · 获赞 4 · 访问量 1211

猜你喜欢

转载自blog.csdn.net/weixin_42176221/article/details/101772706