21xrx.com
2024-12-22 22:05:31 Sunday
登录
文章检索 我的文章 写文章
用C++生成一定范围内不重复的随机整数
2023-07-05 04:26:39 深夜i     --     --
C++ 随机整数 不重复 范围 生成

C++是一门面向对象的程序设计语言,可以通过其内置的随机数生成函数,实现在一定范围内生成不重复随机整数的功能。在现实运用场景中,这种技术有许多应用,例如各种游戏玩法、数据挖掘、机器学习等等。

具体实现过程如下:

1. 定义一个整型数组arr,用于存储随机数,数组的大小为需要生成的数的个数。

2. 定义一个变量count,用于记录当前已经生成的随机数的个数,初始值为0。

3. 构造一个循环语句,循环条件为count小于需要生成的数的个数。

4. 内部循环体中,利用C++的随机数生成函数,生成一个随机数,取该数对数组长度取模,即可得到该数在数组中的下标。

5. 判断该下标在数组中是否已经存在,如果存在则跳过,重新生成一个随机数,否则将该数存入数组中,同时count自增。

6. 当count达到需要生成的数的个数时,退出循环。

7. 数组中存储的即为不重复的随机整数。

以下是代码实现:


#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

const int MAX = 1000; // 限制生成随机数的范围

const int NUM = 100; // 要生成的随机数的个数

int main()

{

  int arr[NUM] = {0};

  int count = 0;

  srand(time(0)); // 初始化随机数种子

  while (count < NUM) {

    int r = rand() % MAX; // 生成随机数

    if (arr[r] == 0) { // 判断是否重复

      arr[r] = 1;

      count++;

    }

  }

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

    if (arr[i] == 1)

      cout << i << " ";

  }

  cout << endl;

  return 0;

}

在以上代码中,我们使用了`rand()`函数来生成随机数,并对其取模得到随机数的下标。同时使用一个`count`变量来记录已经生成的数的个数,在`arr`数组中存储已经生成过的数。`while`循环一直运行,直到`count`达到我们所需要生成的随机数的个数。

生成结果如下:


12 34 50 54 65 67 114 115 120 122 126 132 134 141 156 159 161 162 175 183 198 200 214 225 228 237 238 247 261 275 276 278 281 282 292 293 315 320 322 335 336 351 359 364 369 376 378 386 390 391 399 408 436 437 440 446 455 473 477 500 507 531 542 550 552 560 567 576 577 582 585 593 594 598 616 618 626 631 636 643 648 657 670 680 683 707 711 713 719 733 743 764 775 801 809 820 822 831 833 834 847 849 855 859 860 867 868 872 875 890 898 915 916 918 920 926 949 957 969 985 997

因为我们限定了生成随机数的范围为0至999,所以一共只生成了100个不重复的随机整数。 在实际运用场景中,我们可以根据需要修改随机数的个数和范围,或者将生成的结果存入到文件中以备后续使用。

  
  

评论区

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