2015-09-17 3 views
2

Какой генератор случайных чисел используется в Scratch 1.4 и где я могу найти его реализацию в исходном коде? Если это просто libc's random(), пожалуйста, укажите мне место, где оно называется.Какой RNG используется в Scratch?

ответ

4

Scratch 1.x написан на Squeak Smalltalk. Вы можете получить исходный код из Scratch, следуя these instructions.

Блок pick random() to() определен в Scratch-Objects -> ScriptableScratchMorph (экземпляр) -> другой ops ->randomFrom:to:. Основной существенный код есть

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

Теперь, что RandomGen? Оказывается, он определен в Scratch (в инициализации класса), как только являющийся копией Squeak's Random.

По the Squeak wiki:

случайных чисел-генератор представляет собой генератор Парк-Миллер, он реализован в классе Random.

Scratch также вызывает случайное число в некотором list blocks, где вы можете что-то сделать с помощью «любого» элемента списка. Это реализовано в list ops -> lineNum:forList:.