问题描述
- about srand and rand
-
我做了个贪吃蛇程序,里边有food 和snake。
每次snake吃掉food之后,就需要重新生成一个。我是用srand和rand来生成的,
生成之后判断一下有没有跟snake重合,如果重合,则重新生成一个。
现在问题来了,有的时候这个过程会非常慢,我觉得是rand的时候有一定几率某几次总是生成在某个数附近,造成一直跟snake重合。
我想问,是我用rand和srand用的不对吗,还是有更好的方法?
求大神指教
解决方案
- 首先第一点,C里面提供的随机数函数rand(),叫伪随机数,它是由一个函数生成的,一般用前一个随机数来生成后一个随机数。第一个被用来生成随机数的数叫做随机数种子。
- 在c中srand是指定了随机数种子。
- 也就是说,如果你在每次srand提供了同样的数的话(比如说,每轮游戏的开始,用同一个数srand了),随后它产生的随机数序列是一模一样的,一直到你下一次的srand。
- 为了解决这个问题,一般每次产生一组随机数之前,用一个肯定不会重复的数值来执行srand,比如时间。
时间: 2024-10-25 14:25:33