欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}