Какой генератор случайных чисел используется в Scratch 1.4 и где я могу найти его реализацию в исходном коде? Если это просто libc's random()
, пожалуйста, укажите мне место, где оно называется.Какой RNG используется в Scratch?
2
A
ответ
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:
.