c语言生成随机数笔记

利用C语言在vs2013生成随机数的一般方式记录

#include <stdio.h>
#include <time.h> 
#include <stdlib>  //利用时间来制造伪随机数

int main()
{
	int random1 = 0;     //设置存放空间
	float random2 = 0.0;
	
	srand((unsigned)time(NULL));    //设置一个时间种子,种子必须是整形,用时间来近似表示出随机数

	random1=rand()%10+3;      //产生一个随机数放在random里面,范围是(0+3)~(10-1+3),本来rand()产生的随机数是0~RAND_MAX

	random2=1.0*rand()%10+3;     //产生浮点型的方式

//由于电脑处理速度太快,能在一秒内同时处理很多行代码,所以同时产生多个随机数可能造成随机数都一样的情况

//解决方案:
	//srand((unsigned)time(NULL) + (unsigned)rand());


  	return 0;
}	

小总结

以下一段话摘自***烟雨迷离半世殇***:
系统在调用rand()之后就自动调用srand(),如果用户在rand()之前调用srand()给参数seed指定一个值,那么rand()就会将seed的值作为产生伪随机数的初始值,如果用户在rand()前没有调用srand(),系统会默认将1作为伪随机数的初始值,如果给了一个定值,每次rand()产生的随机数序列就一样了,所以为了避免发生上述情况,通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来产生种子,如果觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘以某个合适值,如srand((unsigned)time(NULL)*10)。

如果不想用

 srand((unsigned)time(NULL) + (unsigned)rand())

也可以

srand((unsigned)time(NULL));
for (i=0;i<5;i++)
{
	random=rand()%10+3;   //在循环体外面调用srand(),每调用一次rand()就会调用一次srand()来更新种子
}

希望可以帮到你,加油!

                                                        2020.5.6
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值