C语言总结

生成随机数的方法

1 rand函数

c语言提供了rand这个库函数来实现随机数的生成,函数原型如下,包含在stdlib.h中

此数字由一种算法生成,该算法每次调用时都会返回一系列明显不相关的数字。该算法使用种子来生成序列,应使用函数将其初始化为某个独特的值。

来自cplusplushttps://legacy.cplusplus.com/reference/cstdlib/rand/?kw=rand


它会产生一个0到RAND_MAX的数字,RAND_MAX这是一个宏,在stdlib.h中定义为32767。

2 srand函数

我们注意到上文中提到rand函数会使用一个种子,我们可以理解为一个随机数生成的起始位置,如果我们不设置,编译器默认为1,这样每次生成的值都是一样的,所以它生成的其实是一个伪随机值。

这时我们需要设置这个种子,就要用到srand函数,同样与rand函数一样包含在stdlib.h中。函数原型如下。

参数是一个无符号整形,那我们不能每次在生成代码的时候都手动去改变这个值,设置我们rand函数生成随机值的起点。我们需要一个时刻在变的值来当作参数传递给srand函数。

srand(1);//第一次使用
srand(2);//第二次使用
srand(3);//第三次使用
//等等

3 time函数

我们既然提到时刻在变的值,那么时间不就是现成的例子。

我们想到c语言的time.h中的time函数,他会返回一个时间戳,而时间是时刻在变化的,原型如下

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

 因为time函数的返回值time_t类型的数据而srand函数要的是无符号整形,所以我们需要强转类型一下。这样我们就得到了时刻在变化的随机值了。

4 代码实现 

#include <stdio.h>
#include<stdlib.h>
#include<time.h> 
int main()
{
	srand((unsigned int)time(NULL));
	printf("%d ",rand());
	printf("%d ",rand());
	printf("%d ",rand());
	printf("%d ",rand());
	printf("%d ",rand());
	printf("%d ",rand());
	printf("%d ",rand());
	printf("%d ",rand()); 
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值