C++产生不重复随机数的方法
程序员文章站
2022-05-19 21:41:41
...
#include <bits/stdc++.h>
using namespace std;
int main()
{
int number;
cin >> number;
const int n = number;
int arr[n];
for(int i = 0; i < n; i++)
{
arr[i] = i;//定义一个从0到n-1不重复的数组
}
srand(time(0));//随机数种子以从1970年1月1日00:00:00到现在的秒数为种子
for(int i = 0; i < n; i++)
{
int j = rand() % n;//使j随机取0到n-1的数
int temp = arr[i];//用temp存储第i个数
arr[i] = arr[j];//将第j个数的数值赋值给第i个数
arr[j] = temp;//将原先第i个数的数值赋值给第j个数
//这一系列操作其实就是将0到n-1中的两个数互换位置,依旧保持不重复的数值
}
for(int i = 0; i < n; i++)
{
cout << arr[i] << endl;//输出打乱后的数组
}
return 0;
}