
地 址:上海市浦东新区66号
电 话:13383756132
网址:www.lbwcode.com
邮 箱:29240282@qq.com
在C语言中,语言随随机数是机函一种(zhong)非常重要的概念,它可以用于(yu)模拟现实世界中的数产生不确定性(xing),C语言提供了多种生成随机数的语言随函数,其中最常用的机函是rand()和srand(),本回答将详细介绍如何使(shi)用这些函数生成随机数,数产生并给出一些实际应用(yong)示例。语言随(图片来源网络,机函侵删)

rand()函数是语言随C语言中用于(yu)生成随机整数的函数,它的机函原型如下:

int rand(void);该函数不(bu)接受任何参数,返回一个介于0到RAND_MAX之间的数产生(sheng)随机整数,RAND_MAX是语言随一个常量,其值(zhi)通常为32767或更大(da),机函具体取(qu)决于编译器和平台。数产生

需要注意的(de)是,每次(ci)调用rand()函数后,它都会更(geng)新内部的随机数种子,为了(le)生成不同的(de)随机数序列,我们需要在程序中多次调用rand()函数,或(huo)者使(shi)用其他方法来重置随机数种子。
srand()函数是C语言中用于设置随机数种子的函数,它的原型如下:
void srand(unsigned int seed);
该函数接受一个无符号整数(shu)作为参数,将其(qi)用作新(xin)的随机数种子,通常情(qing)况下,我们使用当前时间作为种子,以生成不同的随机数(shu)序列。
#include <time.h>#include <stdlib.h>#include <stdio.h>int main() { // 初始化随机数种子为(wei)当前(qian)时间 srand(time(NULL)); // 生成一个0到99之间的随机整数 int random_number = rand() % 100; printf("Random number: %d", random_number); return 0;}3、生成指定范围内(nei)的随机数
我们需要生成指定范围内的随机数,例如1到100之间的随机整(zheng)数,这时,我们可以使用取模运算符(%)来实现。
#include <stdio.h>#include <stdlib.h>#include <time.h>int main() { // 初始化随机数种子为当前时间 srand(time(NULL)); // 生成一个1到100之(zhi)间(jian)的随机整(zheng)数 int random_number = rand() % 100 + 1; printf("Random number: %d", random_number); return 0;}4、生(sheng)成指定(ding)范围内的随机浮点数
除了生成整(zheng)数随机数外,我们还可以生成指定范围内的随机浮点数,这时,我们可以使用(yong)rand()函数生(sheng)成一个随机整数(shu),然后除以一个适当的系数,再加上指定(ding)的最小值。
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h>int main() { // 初始化随机数种子为当前时间 srand(time(NULL)); // 生成一个1到100之间的随机浮点数 double random_number = (double)rand() / RAND_MAX * 100 + 1; printf("Random number: %f", random_number); return 0;}5、生成(cheng)多个不重复的随机数序列
如果需要生成多个不重复的随机数(shu)序列,我们可以使用循环和数(shu)组来存(cun)储已经生成的随机数。
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h>#include <string.h>#include <stdbool.h>#define ARRAY_SIZE 100 // 数组大小为100个元素#define RAND_RANGE 100 // 随机数范围为0到99之间(包括0和99)#define ARRAY_LENGTH ARRAY_SIZE * RAND_RANGE // 数组长度为ARRAY_SIZE * RAND_RANGE个元素(即10,000个元素)typedef struct { int array[ARRAY_LENGTH]; // 定义一个包含ARRAY_LENGTH个元素的数组来存储随机数序列 int length; // 记录当前已(yi)经(jing)生成的随机数序列的长度(即数组中已填充的元素个数)} RandomNumberArray; // 定(ding)义一个(ge)结构体来表示随机数序列数组类型(xing)RandomNumberArray,包含一个整型数组和(he)一个整型变量length作为成员(yuan)变量,分别表示随机数序列和已经生成的随机数序列的长(chang)度,注意这里的(de)数组大小为ARRAY_LENGTH个(ge)元素(即10,000个元素),而不是ARRAY_SIZE个(ge)元素(即100个元素),这是因为我们需(xu)要存(cun)储多个(ge)不重复的随机数序列,每个序列可能包含不同数(shu)量的随机数,而数组的大小应该足够大,以(yi)便容纳所有可能的随机数序列(lie),我们还定义了一个整型变(bian)量(liang)length来记录当(dang)前已经生成的随机数序列的长度(即数组中已填充的(de)元素个数),这样我们就可以通过(guo)length来判断是否还有未填充的位置可以使用,我们将这个(ge)结构体定义为RandomNumberArray类型,接下来我们实(shi)现一个函数来填充这个数组: