面试题答案
一键面试#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 生成指定范围内的随机整数
int generateRandomNumber(int min, int max) {
// 使用time函数设置随机数种子
srand(time(NULL));
// rand函数生成0到RAND_MAX之间的随机整数
// 通过取模和加法操作将其映射到指定范围[min, max]
return min + (rand() % (max - min + 1));
}
实现原理:
- 设置随机数种子:使用
srand(time(NULL))
,time(NULL)
获取当前时间作为种子,这样每次程序运行时种子不同,生成的随机数序列也就不同。如果不设置种子,默认种子是1,每次运行程序产生的随机数序列是一样的。 - 生成随机数并映射到指定范围:
rand()
函数会生成一个介于0(包括)和RAND_MAX
(这是一个在<stdlib.h>
中定义的常量,通常是一个很大的整数,比如32767)之间的伪随机整数。通过rand() % (max - min + 1)
,可以得到一个介于0(包括)和max - min
(包括)之间的随机整数,再加上min
,就将这个随机整数映射到了[min, max]
这个指定的范围。