21xrx.com
2025-03-26 01:18:39 Wednesday
文章检索 我的文章 写文章
C++实现不重复随机数生成
2023-06-30 16:11:44 深夜i     14     0
C++ 随机数 不重复 生成

在编程语言中,随机数生成是一个很重要的功能,很多应用场景都需要用到随机数生成,例如游戏中的随机事件、加密算法等。在C++中,我们可以使用rand()函数来生成随机数,但是这个函数会生成重复的随机数,不太适合一些需要不重复的随机数的场景。那么,如何在C++中实现不重复的随机数生成呢?

一种实现方法是使用数组来存储已经生成的随机数,然后在生成新的随机数时检查数组中是否已经存在该数,避免生成重复的随机数。具体实现如下:

#include <iostream>
#include <ctime>
using namespace std;
int main() {
  const int ARR_SIZE = 10; // 数组大小
  int nums[ARR_SIZE] = {0}; // 存储已生成的随机数
  int num, count = 0;
  srand(time(NULL)); // 设置随机数种子
  while (count < ARR_SIZE) {
    num = rand() % 100 + 1; // 生成一个1-100之间的随机数
    bool isExist = false;
    for (int i = 0; i < count; i++) {
      if (nums[i] == num) // 若已经存在该数
    }
    if (!isExist) { // 若不存在,则存储该数
      nums[count++] = num;
    }
  }
  for (int i = 0; i < ARR_SIZE; i++) {
    cout << nums[i] << " "; // 输出不重复的随机数序列
  }
  return 0;
}

此程序生成一个长度为10的随机数序列,每个随机数都是1-100之间的不重复的数字。当数组中的元素个数达到10个时,循环终止,输出存储在数组中的不重复的随机数序列。

总的来说,实现不重复的随机数生成主要是通过数组来存储已经生成的随机数,避免生成重复的随机数。需要注意的是,为了避免生成相同的随机数,程序需要判断是否已经存在该数,并在存储新的随机数时更新数组中的元素个数。

  
  

评论区