21xrx.com
2024-11-05 19:02:15 Tuesday
登录
文章检索 我的文章 写文章
C++生成不重复随机数
2023-07-07 18:58:15 深夜i     --     --
C++ 随机数 不重复

在某些算法或程序中需要生成不重复的随机数,这时候可能需要使用C++来实现这个功能。

通常情况下,生成不重复的随机数可以通过保存已生成的随机数,然后在后续生成中进行比较去重的方法实现。以下是一个简单的示例程序:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  int n, maxnum;

  cout << "请输入要生成的随机数个数:";

  cin >> n;

  cout << "请输入随机数的最大值:";

  cin >> maxnum;

  if (maxnum < n)

    cout << "随机数最大值应该不小于生成的随机数个数!" << endl;

    return 1;

  

  int *numbers = new int[n];

  srand(time(0));

  for (int i = 0; i < n; i++) {

    int num = rand() % maxnum + 1;

    bool flag = true;

    for (int j = 0; j < i; j++) {

      if (num == numbers[j])

        flag = false;

        break;

      

    }

    if (flag) {

      numbers[i] = num;

      cout << num << " ";

    }

    else

      i--;

    

  }

  delete[] numbers;

  numbers = NULL;

  cout << endl;

  return 0;

}

在这个程序中,首先需要输入欲生成的随机数个数n和随机数的最大值maxnum。如果maxnum小于n,则程序会返回错误信息。接着,使用动态分配数组将生成的随机数存储起来,并通过rand()函数生成随机数。生成的随机数需要用一个flag标记判断是否与已生成的随机数重复,如果重复则忽略这一个随机数,重新生成。最后将不重复的随机数输出即可。

以上是一个简单的使用C++来生成不重复随机数的示例程序。可以根据实际需要进行更改和优化,以便更好的满足需求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复