21xrx.com
2024-09-19 09:39:28 Thursday
登录
文章检索 我的文章 写文章
C语言实现不重复随机数生成算法
2023-06-15 06:51:51 深夜i     --     --
C语言 不重复随机数 生成算法 数组 rand()函数

在编程中,有时需要使用随机数。而有些情况下,我们需要生成的随机数不可重复,这时就需要使用不重复随机数生成算法。本文将介绍如何使用C语言实现不重复随机数生成算法。

首先,我们需要使用rand()函数生成随机数。但rand()函数可能会重复生成相同的数,因此我们需要使用其他方式来保证生成的随机数不重复。一种有效的方式是将生成的数存储到数组中,并在生成下一个随机数前查看该数是否已经被生成。

具体实现方式如下:

1.定义一个长度为n的数组,存储已经生成的随机数。

2.生成随机数时,先使用rand()函数生成一个随机数,然后与已有数组中的数一一比对是否重复。如果重复,则重新生成一个随机数,直到生成的随机数不重复为止。

3.将生成的不重复随机数存储到数组中。

4.重复执行步骤2和步骤3,直到数组中存满n个不重复随机数为止。

下面是具体的实现代码:


#include

#include

#include

#define N 100000 // 需要生成的随机数的个数

int main()

{

  int i, j;

  int flag; // 标记生成的随机数是否重复

  int arr[N]; // 存储已经生成的随机数

  int num; // 生成的随机数

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

  arr[0] = rand() % N;

  for (i = 1; i < N; i++) {

    while (1) {

      num = rand() % N;

      flag = 1;

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

        if (num == arr[j])

          flag = 0;

          break;

        

      }

      if (flag) {

        arr[i] = num;

        break;

      }

    }   

  }

  // 输出生成的不重复随机数

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

    printf("%d ", arr[i]);

  }

  return 0;

}

  
  

评论区

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