2

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

4

1 回答 1

4

Scratch 1.x 是用 Squeak Smalltalk 编写的。您可以按照这些说明从 Scratch 中获取源代码。

pick random () to ()块在 Scratch-Objects -> ScriptableScratchMorph (instance) -> other ops -> 中定义randomFrom:to:。基本的基本代码有

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

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

根据Squeak wiki

random-number-generator 是一个 Park-Miller 生成器,它在 Random 类中实现。

Scratch 还要求在某些列表块中使用随机数,您可以在其中对“任何”列表项进行操作。这是在list ops -> lineNum:forList:.

于 2015-09-18T14:50:29.980 回答