码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。
随机数在游戏和动画中十分常用和有用。但在使用中,随机数的生成、分布也涉及很多的问题。今天我们就来研究一下。
随机数是指在一定范围内随机出现的一系列数据。可以用于模拟随机的变化及动作、研究统计分析及概率等,或在游戏中模拟一些角色的随机运动。
计算机软件中使用的随机数绝大部分都是伪随机数,也就是使用软件内部函数生成的随机数,并不是真正意义上的随机数。但在一般的情况下,可以当做真正的随机数来使用。
在Scratch中,提供了一个积木,用于生成随机数,大家还是比较熟悉这个积木使用的。但就是这个看起来简单的积木,也有一些需要了解的内容。
整数与小数
在使用这块积木时,如果开始的值和结束的值都是整数,则返回的值也是在两数之间的一个整数(可能包含这两个值),但如果开始和结束值中有一个带有小数,则生成的就是带小数的随机数了。
如果我们想随机在平面上放置一个点,可以使用X取随机数同时Y取随机数的方法。
这样,在整个舞台上的分布就是比较均匀的。
大部分的时候,我们需要平均分布的点。但也有些情况下,我们可能会希望产生不均匀的随机分布。这时应该如何处理呢?
实际上,在数学上就相当于做了一个变换。将一个分布变换到另一种的分布,实现起来也很简单。
我们试着改变点在Y方向上的分布。
基础情况下,Y在0-100之间是随机均匀分布的。就是a取0-1之间的随机数,而Y=100*a,则分布在Y方向上基本是均匀的。
如果增加一个平方根的变换。即 y=sqrt(a)*100。
得到的结果如下:
结果将计算换为平方。即y=a*a*100
就能得到下面的分布。
可以看到,通过对于产生的随机数的变换,可以改变随机数的分布,使之在整个值域上不再是均匀的了。
在我们进行游戏的时候,我们总感觉计算机生成的着法是均匀的,实际上是可以生成非均匀着法的。
例如在石头剪子布的游戏中。计算机正常应该是平均从三种中随机出一种。
这样三种是基本均匀的。
但如果改变程序,就可能改变出三种出拳的机率,例如下面的程序。
可以看到,1到4的随机数是均匀的。所以计算机在出拳时,平均每4次中会有两次出石头,一次出剪刀,一次出布。原来1/3,1/3,1/3的概率变成了1/2,1/4,1/4。就不再是均匀的了。
总结
1 随机数是创建随机效果的有用方法,可以应用于模拟及统计学等。
2 范围的任何数带小数,会使得到的随机数也带小数
3 二维随机数可以得到平面上的均匀分布。
4 通过函数变换或条件判断,可以得到不均匀分布的随机分布。