21xrx.com
2024-12-23 00:55:06 Monday
登录
文章检索 我的文章 写文章
如何使用c++生成不重复的随机数?
2023-06-29 01:44:50 深夜i     --     --
C++ 随机数 不重复

在编程过程中,我们经常需要使用随机数来模拟现实情况或产生随机数据。然而,随机数的生成往往存在重复问题,这会对程序的运行结果造成干扰。那么,如何使用c++生成不重复的随机数呢?

首先,我们可以使用c++标准库提供的rand函数来生成随机数。rand函数会返回均匀分布在0到RAND_MAX之间的一个整数,其中RAND_MAX是宏定义,通常为32767。为了生成不重复的随机数,可以考虑使用时间作为随机种子。

具体地,我们可以使用time函数来获取当前系统的时间,以秒钟为单位。然后,将时间数值作为随机数种子传入srand函数,确保每次运行程序时,种子都是不同的。这样,每次调用rand函数时,都会生成不同的随机数序列,从而实现不重复的随机数生成。

下面是一个简单的c++程序示例,展示了如何使用时间作为随机种子来生成不重复的随机数。


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  //使用时间作为随机种子

  srand((unsigned)time(NULL));

  //生成不重复的随机数序列,范围为0~99

  int nums[100] = { 0 };

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

    int num = rand() % 100;

    while (nums[num] != 0) {

      num = rand() % 100;

    }

    nums[num] = 1;

    cout << num << " ";

  }

  return 0;

}

在上述代码中,我们首先使用srand函数设置随机种子,以时间数值作为参数。然后,生成一个长度为100的数组nums,用于记录每个随机数是否已经生成过。接着,使用while循环结合rand函数生成随机数num,直到num未被生成过为止。最后,将num标记为已经生成,输出到控制台。

通过以上的程序示例,我们可以看到使用c++生成不重复的随机数是非常简单的,只需要设置随机种子为时间即可。这能够在很大程度上提高编程的精度和效率。

  
  

评论区

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