21xrx.com
2024-09-19 09:44:18 Thursday
登录
文章检索 我的文章 写文章
C++实现随机生成不重复的数字
2023-07-13 21:24:28 深夜i     --     --
C++ 随机生成 不重复 数字

随机数是编程中常用的功能之一,而C++语言中生成随机数的方法也比较简单。不过,若想在生成随机数时避免出现重复,需要引入一些额外的操作。本文将介绍如何使用C++实现随机生成不重复的数字。

首先,C++中生成随机数的方法是使用`rand()`函数,它的返回值是一个0到`RAND_MAX`的整数。因此,可以先调用`srand()`函数来设置随机数种子,以保证每次生成的随机数互不相同。以下是一个例子,它会输出10个0到99的随机数:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  srand(time(NULL));

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

    cout << rand() % 100 << " ";

  }

  return 0;

}

在输出10个随机数之前,程序首先使用`srand()`函数来设置随机数种子。这里使用了`time()`函数返回的时间戳,可以保证每次程序执行时随机数种子都是不同的。然后,程序使用`rand() % 100`来限制随机数的范围在0到99之间,并输出这些随机数。

然而,上述例子中生成的随机数可能会出现重复,因为`rand()`函数的返回值并不能保证不重复。为了避免重复,需要在生成随机数时进行去重操作。以下是一种简单的实现方法:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  const int N = 10;

  int arr[N] = { 0 };

  int num;

  srand(time(NULL));

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

    do {

      num = rand() % 100;

    } while (arr[num] != 0);

    arr[num] = 1;

    cout << num << " ";

  }

  return 0;

}

这个示例程序生成10个0到99的随机数,并且保证它们互不相同。生成随机数的方法是使用`do-while`循环,每次循环生成一个随机数`num`,并检查`arr[num]`是否已经被标记为重复。如果是,则再次生成随机数,直到生成一个新的未出现过的数字。最后,程序将这个随机数标记为已使用过,并输出它。

总结来说,随机数是C++中常用的功能之一,代码中使用`srand()`和`rand()`函数生成随机数是非常简单的。如果需要生成不重复的随机数,可以使用一些额外的操作,例如在生成随机数时进行去重操作,以实现更加灵活和多样化的应用。

  
  

评论区

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