Генерация случайных чисел
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Генерация случайных чисел - распространенная задача, которая может понадобиться Вам в самых разных проектах. Возможно, Вы уже встречали функцию random()
в документации FunC, но обратите внимание на то, что ее результат можно легко предсказать, если не использовать некоторые дополнительные приемы.
Как кто-то может предсказать сл учайное число?
Компьютеры ужасны в генерировании случайной информации, поскольку все, что они делают, - это следуют инструкциям пользователей. Однако, поскольку людям часто нужны случайные числа, они придумали различные методы генерации псевдослучайных чисел.
Эти алгоритмы обычно требуют от Вас указать значение seed'a, которое будет использовано для генерации последовательности псевдослучайных чисел. Таким образом, если Вы запустите одну и ту же программу с одним и тем же seed несколько раз, Вы неизменно получите один и тот же результат. В TON seed для каждого блока разное.
Поэтому, чтобы предсказать результат работы функции random()
в смарт-контракте, Вам просто нужно знать текущий seed
блока, что невозможно, если Вы не являетесь валидатором.