c语言怎么生成特定范围的随机数(时间戳和rand()函数的使用)

本文详细介绍了C语言中rand()函数的使用,包括其伪随机性、与srand()配合确保随机性,并提供了如何通过time()函数结合srand()生成不同范围随机数的方法。重点讲解了如何使用rand()生成1到100的随机数实例。
摘要由CSDN通过智能技术生成

0.代码与结果展示

可以产生1-100的特定数
详解看第四点。

int main()
{
	srand((unsigned int)time(NULL));
	for (int i = 0; i < 3; i++)
	{
		int x;
		x = rand() % 100 + 1;
		printf("%d\n", x);
	}

	return 0;
}

1.rand()函数介绍

先看一个例子:

int main()
{
	for (int i = 0; i < 3; i++)
	{
		int x;
		x = rand();
		printf("%d\n", x);
	}

	return 0;
}

这是它的结果。初一看似乎真的产生了随机数。但是我们再运行一次看看
在这里插入图片描述
结果依然是这个。不信你可以去自己试试。
在这里插入图片描述
这是rand()函数的特点。
那怎么解决这个问题呢?C语言对rand()函数使用里面有一句话。
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.

简单来说在使用rand函数前要先用srand来设置一个随机数起点。

2.srand()与rand()搭配

在这里插入图片描述
这是srand的文档。srand的参数是一个无符号整型。我们实验一下在rand前面加上srand。

int main()
{
	for (int i = 0; i < 3; i++)
	{
		srand(2);
		int x;
		x = rand();
		printf("%d\n", x);
	}

	return 0;
}

由于起点是个不变的数,所以rand产生的数也是不变的。那我们可以使用time函数来使srand的起点可以变化
在这里插入图片描述

3.time()作为srand的参数如何使用

这样可以产生随机数了吗?

int main()
{
	for (int i = 0; i < 3; i++)
	{
		srand((unsigned int)time(NULL));
		int x;
		x = rand();
		printf("%d\n", x);
	}

	return 0;
}

答案是不行的。
在这里插入图片描述
这里要记住,很重要。起点只用设置一次就可以了,因此我们要把srand函数放在程序最开头的位置才可以。

int main()
{
	srand((unsigned int)time(NULL));
	
	for (int i = 0; i < 3; i++)
	{
		int x;
		x = rand();
		printf("%d\n", x);
	}

	return 0;
}

结果变成随机的了
在这里插入图片描述

4.怎么用rand函数生成特定范围的随机数

这里有一个公式。
假设你想要0-X的任意随机数,模上X+1就可以了。理由是模数不可能大于除数。
假设你想要1-X的任意数,模上X然后加1就可以了。理由是模X可以产生0-X-1的数字,加上1就是1-X的任意数了。

下面这段代码产生范围是多少的随机数呢?

int main()
{
	srand((unsigned int)time(NULL));
	for (int i = 0; i < 3; i++)
	{
		int x;
		x = rand() % 100 + 1;
		printf("%d\n", x);
	}

	return 0;
}

答案:1-100.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值