📜  生成C范围内的随机数(1)

📅  最后修改于: 2023-12-03 15:40:51.544000             🧑  作者: Mango

生成C范围内的随机数

在编写C程序时,我们经常需要使用随机数来进行测试、随机选择等操作。本文将介绍如何在C语言中生成指定范围内的随机数。

生成指定区间内的随机数

C语言中可以使用rand()函数来生成随机数,该函数返回一个无符号整数,其取值范围在[0,RAND_MAX]之间。其中,RAND_MAX是一个宏定义,其值通常为32767。如果我们想要生成指定区间[a,b]内的随机数,则可以使用如下公式:

rand() % (b - a + 1) + a

其中,%表示求模运算,a表示区间的最小值,b表示区间的最大值。

注意,由于rand()函数返回的是无符号整数,因此使用求模运算时需要注意区间的长度不能超过RAND_MAX

随机数种子

由于rand()函数生成的随机数是伪随机数,其生成的序列是可以被预测的。为了产生更为随机的序列,我们需要设置随机数种子。在C语言中,可以使用srand()函数来设置随机数种子。该函数需要传入一个整数,通常可以使用时间作为种子:

srand((unsigned)time(NULL));
完整代码实例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  int a = 1, b = 10;
  int random_num;

  srand((unsigned)time(NULL));   // 设置随机数种子

  for (int i = 0; i < 10; i++) {
    random_num = rand() % (b - a + 1) + a;
    printf("%d ", random_num);
  }
  printf("\n");

  return 0;
}

在该示例中,我们使用rand() % (b - a + 1) + a公式生成了[1,10]范围内的十个随机数,并使用printf()函数输出了这些随机数。

上述代码的输出示例为:

3 8 1 1 9 10 9 2 10 8 

可以看到,该代码成功地生成了[1,10]范围内的随机数。

总结

本文介绍了如何在C语言中生成指定范围内的随机数。程序员可以根据自己的实际需求使用srand()rand()函数来生成随机数。需要注意的是,为了防止生成重复的随机数,程序员可以将随机数种子设置为时间戳等不容易重复的值。