C++随机数
C++中产生随机数的方式有产生一个随机数和产生一系列不重复的随机数两种方式;
1. 产生单个随机数
- 通过
rand()
函数,需要先设置不同随机数种子,否则后面生成的每个随机数都一样,在此可以使用当前的时间作为种子。
#include <cstdlib>
#include <random>
srand((unsigned)time(NULL)); // 需要设置随机数种子,否则每次生成的随机数相同
int num = rand();
- 取一定范围内的随机数
要取得[a,b)
的随机整数,使用(rand() % (b-a))+ a
;
要取得[a,b]
的随机整数,使用(rand() % (b-a+1))+ a
;
要取得(a,b]
的随机整数,使用(rand() % (b-a))+ a + 1
;
2. 生成一个范围内的不重复的随机数
由于生成的随机数可能会出现重复的,所以如果需要生成的随机数是不重复的,可以换一种方式:
- 先生成一定范围内的顺序数值,这样可以保证数值各不相等
- 将该顺序数值打散,然后取前指定项,即可等同于取该范围内的不重复随机数
如取 0~10 之间的 6 各随机数:
// arr 中用来存放索引
vector<int> arr(11);
for(int i = 0; i < 11; i++)
{
arr[i] = i;
}
// 将数组的顺序打乱,然后取前面的 6 项,相当于在这个范围内取 6 个不重复的随机数
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(arr.begin(), arr.end(), g);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!