C++生成一定范围内固定个数的随机数

1.随机数

随机数:在某次产生过程中按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。一般使用的是伪随机的。

2.一般随机数生成

常使用函数rand()产生随机数,但是随机数值的范围在0至RAND_MAX 间,RAND_MAX与使用数据类型有关。

int randNum = 10;
for (int i = 0; i < randNum; i++) { cout << rand() << " "; }

产生结果:41 18467 6334 26500 19169 15724 11478 29358 26962 24464。

3.一定范围的随机数

一般情况下,随机数产生的范围是RAND_MIN至RAND_MAX之间。通用格式是为:
(1)[a,b)间随机整数:rand() % (b-a)+ a;
(2)[a,b]间随机整数:rand() % (b-a+1)+ a;
(3)(a,b]间随机整数:rand() % (b-a)+ a + 1;
不同类型的随机数使用相应数据类型进行转换。

int randNum = 10;
for (int i = 0; i < randNum; i++) { cout << (rand()%(10-1+1))+1 << " "; }

产生结果:2 8 5 1 10 5 9 9 3 5。
可以发现,[1,10]之间产生的随机数是有重复。不重复,该如何?

4.不重复的随机数

例:在[1,20]中产生5个不重复的随机数

#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;

int main() {
	srand((unsigned)time(0));
	int randNum = 20;//随机数的个数
	int num = 5;//需要的随机数个数
	int randMin = 1;//最小数值范围
	int randMax = 20;//最大数值范围
	int a[20];
	for (int i = 0; i < randNum; ++i) a[i] = i+1;//将数值范围中的整数存放于数组
	for (int j = randNum-1; j >= 1; --j) swap(a[j], a[rand() % j]);//随机产生索引脚标的数值与数组值进行交换
	for (int i = 0; i < 5; ++i) { cout << a[i] << " "; }
	system("pause");
	return 0;
}

产生结果:9 19 10 6 2。

产生固定范围的不重复随机数方法较多,还需耐心学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南音小榭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值