在Scratch中使用哪个RNG?

时间:2015-09-17 19:02:47

标签: mit-scratch

在Scratch 1.4中使用哪个随机数生成器,哪里可以在源代码中找到它的实现?如果它只是libc的random(),请指出我所在的地方。

1 个答案:

答案 0 :(得分:4)

Scratch 1.x是用Squeak Smalltalk编写的。您可以按照these instructions

从Scratch中获取源代码

pick random () to ()块在Scratch-Objects中定义 - > ScriptableScratchMorph(实例) - >其他操作 - > randomFrom:to:。基本的基本代码是

t5 _ RandomGen next * (t4 - t3) + t3.

现在,RandomGen是什么?事实证明,它在Scratch中定义(在类初始化中)只是作为Squeak的Random的副本。

根据the Squeak wiki

  

随机数生成器是Park-Miller生成器,它在Random类中实现。

Scratch还会在某些list blocks中调用一个随机数,您可以在其中使用“任意”列表项执行某些操作。这是在list ops -> lineNum:forList:

中实现的