MST

星途 面试题库

面试题:C语言中生成指定范围内随机整数的实现

在C语言中,使用随机数函数,编写一个函数,生成一个在指定范围(例如min到max之间,包含min和max)内的随机整数,并解释实现原理。
24.6万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#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));
}

实现原理:

  1. 设置随机数种子:使用srand(time(NULL))time(NULL)获取当前时间作为种子,这样每次程序运行时种子不同,生成的随机数序列也就不同。如果不设置种子,默认种子是1,每次运行程序产生的随机数序列是一样的。
  2. 生成随机数并映射到指定范围rand()函数会生成一个介于0(包括)和RAND_MAX(这是一个在<stdlib.h>中定义的常量,通常是一个很大的整数,比如32767)之间的伪随机整数。通过rand() % (max - min + 1),可以得到一个介于0(包括)和max - min(包括)之间的随机整数,再加上min,就将这个随机整数映射到了[min, max]这个指定的范围。