Случайные числа
Детерминированная компьютерная программа не может генерировать истинно случайные числа. Для большинства целей псевдослучайные числа достаточно. Последовательность псевдослучайных чисел генерируется детерминированным образом. Эти числа не являются истинно случайными, но они обладают определёнными свойствами, имитирующими случайную последовательность. Например, все возможные значения встречаются одинаково часто в псевдослучайной последовательности.
Псевдослучайные числа генерируются из начального значения (seed). Начиная с любого заданного значения, функция random всегда генерирует одну и ту же последовательность чисел. По умолчанию Emacs инициализирует начальное значение (seed) при запуске таким образом, что последовательность значений random (с подавляющей вероятностью) отличается в каждом запуске Emacs.
Иногда вам нужно, чтобы последовательность случайных чисел повторялась. Например, при отладке программы, поведение которой зависит от последовательности случайных чисел, полезно получить такое же поведение при каждом запуске программы. Чтобы сделать последовательность повторяющейся, выполните (random ""). Это устанавливает начальное значение (seed) на постоянное значение для вашего конкретного исполняемого файла Emacs (хотя оно может отличаться для других сборок Emacs). Вы можете использовать другие строки для выбора различных значений seed.
- Функция: random &optional limit
-
Эта функция возвращает псевдослучайное целое число. Повторные вызовы возвращают последовательность псевдослучайных целых чисел.
Если limit — положительное целое число, значение выбирается так, чтобы оно было неотрицательным и меньше limit. В противном случае значение может быть любым целым числом, то есть любым целым числом от
most-negative-fixnumдоmost-positive-fixnum(см. Основные сведения об целых числах).Если limit —
t, это означает выбор нового начального значения (seed), как если бы Emacs перезапускался, обычно из системной энтропии. На системах, не имеющих пулов энтропии, начальное значение выбирается из менее случайных переменных данных, таких как текущее время.Если limit — строка, это означает выбор нового начального значения (seed) на основе содержимого строки.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Random-Numbers.html