最新消息:码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。

Scratch教程:不随机的随机数

Scratch 少儿编程 7152浏览 0评论

码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。

随机数在游戏和动画中十分常用和有用。但在使用中,随机数的生成、分布也涉及很多的问题。今天我们就来研究一下。

 

随机数

 

 

随机数是指在一定范围内随机出现的一系列数据。可以用于模拟随机的变化及动作、研究统计分析及概率等,或在游戏中模拟一些角色的随机运动。

计算机软件中使用的随机数绝大部分都是伪随机数,也就是使用软件内部函数生成的随机数,并不是真正意义上的随机数。但在一般的情况下,可以当做真正的随机数来使用。

在Scratch中,提供了一个积木,用于生成随机数,大家还是比较熟悉这个积木使用的。但就是这个看起来简单的积木,也有一些需要了解的内容。

不随机的随机数

  整数与小数

 

在使用这块积木时,如果开始的值和结束的值都是整数,则返回的值也是在两数之间的一个整数(可能包含这两个值),但如果开始和结束值中有一个带有小数,则生成的就是带小数的随机数了。

我们做一个试验,生成10个随机数
可以看到,由于范围的结束值是带小数的9.9,Scratch生成了10个带小数的随机数。

 

不随机的随机数

不随机的随机数

 

二维随机数

如果我们想随机在平面上放置一个点,可以使用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  通过函数变换或条件判断,可以得到不均匀分布的随机分布。

 

 
 

您必须 登录 才能发表评论!