C编程随机函数简短记录

原创首发于CSDN,转载请注明出处,谢谢!https://blog.csdn.net/weixin_46959681/article/details/117460434



为何写这篇文章?

笔者在上一篇博文的结尾处记录了一个关于贪吃蛇食物随机生成的小bug,即食物 ## 有时会在地图的行、列边界处生成导致贪吃蛇无法吃到食物。该问题继续深入下去可以总结成两个方面的内容:

  • 经由随机函数生成的随机数字的上限设置;
  • 随机函数 rand() 和随机种子函数 srand() 的使用。

随机数字上限 —— 贪吃蛇地图边界与随机函数 rand()

在笔者调试贪吃蛇游戏代码的初期就发现了一个小小的bug,随机生成的食物位置有时会出现在20X20地图的边界处如 row=(0,20)、column=(0,20)【表示两者都有出现】,直接导致贪吃蛇无法吃到食物只能在地图上随机游走。

第一次
第二次
在这里插入图片描述在这里插入图片描述

基于以上的运行情况笔者仔细查阅了随机函数 rand() 的用法,发现是对随机生成的上下限数字设置的太过随意只有取模20,没有设置下限,自然也就会出现食物不在地图内的现象。在对食物模块代码 void initFood() 做出修改后,游戏终于正常运行。

修改后的模块代码: initFood()

/* initFood() */
void initFood()
{
		//原代码,范围为0-19。
		//int x = rand()%20;
		//int y = rand()%20;
        srand((unsigned)time(NULL));
        //行与列的下限各自为 3,上限都为 18。
        int x = rand()%15+3;
        int y = rand()%15+3;

        food.row    = x;
        food.column = y;
}

srand() 、rand()的具体用法

  • 请看参考资料内的文章,各自博主已经写的非常详细了。笔者的重点只是简短的记录下个人在实际编程中所遇的问题,而不是重新造轮子。

参考资料


文章更新时间记录

  • 第一节“为何写这篇文章?”完成。 「2021.6.2 10:18」
  • 文章框架初步搭好。 「2021.5.2 10:30」
  • “随机数字上限 —— 贪吃蛇地图边界与随机函数 rand()”一节完成。 「2021.6.2 16:08」
  • 文章竣工。 「2021.6.2 16:26」

P.S.1 到底什么是“正态分布”,我估计只有在学习完概率论后才会有初步理解,真正的精髓还是得掌握现代数学的测度论,理解测度空间后才能有所得。(外面要下雨了) 「2021.6.2 16:27」

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值