Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
RandomNumberGenerator
Наследует: RefCounted < Object
Предоставляет методы генерации псевдослучайных чисел.
Описание
RandomNumberGenerator — это класс для генерации псевдослучайных чисел. В настоящее время он использует PCG32.
Примечание: Базовый алгоритм является деталью реализации и не должен зависеть от него.
Для генерации случайного числа с плавающей точкой (в заданном диапазоне) на основе зависящего от времени начального числа:
var rng = RandomNumberGenerator.new()
func _ready():
var my_random_number = rng.randf_range(-10.0, 10.0)
Обучающие материалы
Свойства
|
||
|
Методы
rand_weighted(weights: PackedFloat32Array) |
|
randf() |
|
randf_range(from: float, to: float) |
|
randi() |
|
randi_range(from: int, to: int) |
|
void |
Описания свойств
Initializes the random number generator state based on the given seed value. A given seed will give a reproducible sequence of pseudo-random numbers.
Note: The RNG does not have an avalanche effect, and can output similar random streams given similar seeds. Consider using a hash function to improve your seed quality if they're sourced externally.
Note: The default value of this property is pseudo-random, and changes when calling randomize(). The 0 value documented here is a placeholder, and not the actual default seed.
Note: Setting this property produces a side effect of changing the internal state, so make sure to initialize the seed before modifying the state:
var rng = RandomNumberGenerator.new()
rng.seed = hash("Godot")
rng.state = 100 # Restore to some previously saved state.
Текущее состояние генератора случайных чисел. Сохраните и восстановите это свойство, чтобы восстановить генератор в предыдущее состояние:
var rng = RandomNumberGenerator.new()
print(rng.randf())
var saved_state = rng.state # Сохранить текущее состояние.
print(rng.randf()) # Продвинутое внутреннее состояние.
rng.state = saved_state # Восстановите состояние.
print(rng.randf()) # Печатает то же значение, что и ранее.
Примечание: Не устанавливайте state в произвольные значения, так как генератор случайных чисел требует, чтобы состояние имело определенные качества для правильного поведения. Его следует устанавливать только в значения, которые получены из самого свойства state. Чтобы инициализировать генератор случайных чисел с произвольным вводом, используйте вместо этого seed.
Примечание: Значение этого свойства по умолчанию — псевдослучайное и изменяется при вызове randomize(). Значение 0, задокументированное здесь, является заполнителем, а не фактическим состоянием по умолчанию.
Описания метода
int rand_weighted(weights: PackedFloat32Array) 🔗
Returns a random integer between 0 and the size of the array that is passed as a parameter. Each value in the array should be a floating-point number that represents the relative likelihood that it will be returned as an index. A higher value means the value is more likely to be returned as an index, while a value of 0 means it will never be returned as an index.
For example, if [0.5, 1, 1, 2] is passed as a parameter, then the method is twice as likely to return 3 (the index of the value 2) and twice as unlikely to return 0 (the index of the value 0.5) compared to the indices 1 and 2.
Prints an error and returns -1 if the array is empty.
var rng = RandomNumberGenerator.new()
var my_array = ["one", "two", "three", "four"]
var weights = PackedFloat32Array([0.5, 1, 1, 2])
# Prints one of the four elements in `my_array`.
# It is more likely to print "four", and less likely to print "one".
print(my_array[rng.rand_weighted(weights)])
Возвращает псевдослучайное число с плавающей точкой между 0.0 и 1.0 (включительно).
float randf_range(from: float, to: float) 🔗
Возвращает псевдослучайное число с плавающей точкой между from и to (включительно).
float randfn(mean: float = 0.0, deviation: float = 1.0) 🔗
Возвращает нормально распределенное, псевдослучайное число с плавающей точкой из указанного mean и стандартного offset. Это также известно как распределение Гаусса.
Примечание: Этот метод использует алгоритм преобразование Box-Muller.
Возвращает псевдослучайное 32-битное целое число без знака в диапазоне от 0 до 4294967295 (включительно).
int randi_range(from: int, to: int) 🔗
Возвращает псевдослучайное 32-битное целое число со знаком в диапазоне от from до to (включительно).
void randomize() 🔗
Устанавливает основанное на времени начальное значение для этого экземпляра RandomNumberGenerator. В отличие от функций генерации случайных чисел @GlobalScope, разные экземпляры RandomNumberGenerator могут использовать разные начальные значения.