用rand函数生成随机数

rand函数产生0~RAND_MAX之间的随机整数。

RAND_MAX一般为32767(根据编程环境有所差别)

Initialize random number generator(srand是初始化随机数的生成器)。

暂且称函数srand的参数为种子。

因为种子固定了,rand所生成的伪随机数列也是固定的。如图,这是我在vs环境下的运行结果。种子是1,rand第一个生成的数一直是41,之后的伪随机数列也都相同,一直是41,18467,6334…………(rand函数的默认种子是常量1)。

 所以需要改变srand的参数。(为了随机数而设置随机数,这看似矛盾,其实后者只要是连续变化的就行)

 而时间是连续变化的。我们可以用time函数来返回一个时间戳(一个数字)。

 由于time函数的返回值是time_t,而srand的参数是unsigned int,强制类型转换一下就行。

得到

srand((unsigned int)time(NULL));

这样rand函数可以生成随机数了。

需要注意 srand((unsigned int)time(NULL));只要调用一次就够了,可能在那一秒时间戳是一样的,所以rand生成的值也一样。可以封装成一个函数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{
	int input;
	do
	{
		scanf("%d", &input);
		printf("%d\n", rand());
	} while (input);
}
int main()
{
	srand((unsigned int)time(NULL));
	game();
	return 0;
}

生成的数字肯定是随机的。

 

P.S.

rand,srand   要引头文件#include <stdlib.h> 

time       要引头文件#include <time.h> 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值