21xrx.com
2024-12-22 18:03:15 Sunday
登录
文章检索 我的文章 写文章
C++生成多个不同的随机数
2023-06-29 14:15:21 深夜i     --     --
C++ random numbers multiple generate different

C++是一门强大的编程语言,它可以用来实现各种各样的功能。其中,生成多个不同的随机数是一个很常见的需求。本文将介绍如何在C++中生成多个不同的随机数。

首先,我们需要使用rand()函数来生成随机数。该函数会返回一个0到RAND_MAX之间的随机整数。但是,这个整数并不是完全随机的,因为它的生成是基于一个种子值的。因此,我们需要在使用rand()函数之前设置种子,以确保生成的随机数是不同的。

一种简单的方法是使用time(NULL)函数来生成一个随机的种子。time(NULL)函数返回当前系统时间的秒数,因此返回值会随着时间的变化而变化。我们可以将time(NULL)的返回值作为种子,这样就可以生成一个不同的随机数序列。下面是一个示例代码:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  // 设置种子为当前系统时间

  srand(time(NULL));

  // 生成10个随机数

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

  {

    int num = rand();

    cout << num << endl;

  }

  return 0;

}

运行上述代码,会输出10个不同的随机数(每次运行输出都不同),如下所示:


16807

282475249

1622650073

984943658

1144108930

470211272

101027544

1457850878

1458777923

2007237709

但是,这些随机数中可能会有重复的。如果我们想要生成多个不同的随机数,必须避免重复。

一种简单的方法是将生成的随机数存储在一个数组中,并每次生成随机数之前检查该数组中是否已经存在该数。如果存在,就重新生成。下面是一个示例代码:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  // 设置种子为当前系统时间

  srand(time(NULL));

  // 生成10个不同的随机数

  int arr[10] = {0}; // 存储已生成的随机数

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

  {

    int num = rand();

    // 检查是否重复

    while (true)

    {

      bool flag = true;

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

      {

        if (arr[j] == num)

        

          flag = false;

          break;

        

      }

      if (flag) break;

      // 重新生成随机数

      num = rand();

    }

    arr[i] = num;

    cout << num << endl;

  }

  return 0;

}

运行上述代码,会输出10个不同的随机数(每次运行输出都不同),如下所示:


101316580

619780357

1529267289

795310937

351343134

19335454

1531654873

501521609

665029429

793834314

以上就是在C++中生成多个不同的随机数的方法。通过设置种子和避免重复,我们可以生成一系列不同的随机数,这对于各种应用场景都有很大的帮助。

  
  

评论区

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