栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言复习:(一)随机数生成

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言复习:(一)随机数生成

问题:

        1.如何每次都生成不同的数

        2.如何生成指定区间的随机数

原理理解及问题解决:

1.在C语言中,stdlib.h头文件中包含rand()函数,此函数能够生成随机数。

2.rand()函数如果没有经过srand()函数给予种子,就会在编译成.exe文件的时候随机生成一个值。

因为编译之进行一次,所以此后打开.exe文件,其值都是固定的,在编译最初产生的。

3.rand()函数产生的随机数并不是真正的均匀随机分布,而是符合正态分布。所以不能直接使用rand()函数构成概率函数。

4.srand()函数能赋予rand()函数种子,在每次调用的时候都能以种子的不同产生不同的数值。srand()函数的参数为:unsigned类型的值。如果此值不同,那么每次rand()函数生成的随机数是不同的。要让此unsigned类型值不同最好的办法是采用time()函数。调用time()函数会向操作系统申请当前时间,所以每次的值都是不同的。        注意:调用time()函数需要在头文件中加上time.h头文件;time()函数的参数如果填NULL,操作系统会自动提供当前时间值。

5.经过实验srand()函数只需要调用一次就能一直使用;

srand()函数如果与rand()函数一同放入for()循环,则会出错,导致随机数为连续值。

实验:

        1.尝试写一个返回指定区间内随机数的函数;参数为:随机变量产生中值,随机变量变化范围

void Main_RandNumCreat_Fun(int MainNum,int RangeNum)
{
	int CreatNum, MiddleNum;

	for (;;)
	{
		MiddleNum = rand() % RangeNum * 2;//中值两侧
		if (MiddleNum > RangeNum)
		{
			MiddleNum = MiddleNum / 2;//大于中值为正数
		}
		else
		{
			MiddleNum = -MiddleNum / 2;//小于中值为负数
		}
		CreatNum = MainNum + MiddleNum;
		printf_s("CreatNum = %dn", CreatNum);
	}
}

其中MainNum是中值,RangeNum是随机偏差值,

CreatNum = MainNum + RangeNum;从而控制了返回数值在数轴上的确定点与模糊范围。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号