21xrx.com
2025-03-28 22:42:47 Friday
文章检索 我的文章 写文章
C++生成不重复随机数
2023-07-07 18:58:15 深夜i     11     0
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++来生成不重复随机数的示例程序。可以根据实际需要进行更改和优化,以便更好的满足需求。

  
  

评论区

请求出错了