c++中的随机数rand()

rand()使用

rand()不需要参数,它会返回一个从0到最大随机数(RAND_MAX)的任意整数,最大随机数的大小通常是固定的一个大整数,一般为0x7fff;rand()范围是[0,RAND_MAX]

1、表示 a~b 之间的一个随机整数,rand() % (b-a+1)+ a ;

rand() % (b-a+1)所得余数只可能在[0, b-a+1]

要产生0~99这100个整数中的一个随机整数,可以表达为:int num = rand() % 100;
要产生1~100,则是这样:int num = rand() % 100 + 1;
可以表示为:int num = rand() % n +a; 其中的a是起始值,n-1+a是终止值,n是整数的范围。

2、若要产生01之间的小数,则可以先取得010的整数,然后均除以10即可得到“随机到十分位”的10个随机小数。

 若要得到“随机到百分位”的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依 此类推。

3、通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这样是为了便于程序的调试。

 若要产生每次不同的随机数,则可以使用srand( seed )函数进行产生随机化种子,随着seed的不同,就能够产生        不同的随机数。

4、生成浮点数随机数,a b为整数或浮点数

rand() * 1.0/RAND_MAX,除法的结果只可能在[0, 1],因为rand()最大才为RAND_MAX。

[0,1]—rand() * 1.0/RAND_MAX
[a,b]—rand() * 1.0/RAND_MAX * (b-a) + a
[a,b)—rand() * 1.0/(RAND_MAX+1) * (b-a) + a
(a,b]—(rand()+1)* 1.0/(RAND_MAX+1) * (b-a) + a
(a,b)—(rand()+1) * 1.0/(RAND_MAX+2) *(b-a) + a

#include <iostream>
#include <ctime>

using namespace std;

#include <ctime>


int main()
{
	//添加随机数种子,作用:利用当前系统时间生成随机数,防止每次随机数一样
	srand((unsigned int)time(NULL));
	int num = rand() % 100 + 1;//生成0~99+1的随机数
	cout << num << endl;
	system("pause");
	return 0;
}

参考文章:

C++中rand()函数的用法

RAND_MAX的使用及rand()函数使用

C++的除法

posted @ 2022-10-10 21:41  北极星!  阅读(134)  评论(0编辑  收藏  举报