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 |
Описи властивостей
Ініціалізує стан генератора випадкових чисел на основі заданого початкового значення. Дане початкове число дасть відтворювану послідовність псевдовипадкових чисел.
**Примітка: ** RNG не має ефекту лавини та може виводити подібні випадкові потоки за подібних початкових значень. Подумайте про використання хеш-функції, щоб покращити якість початкового матеріалу, якщо вони отримані ззовні.
**Примітка: ** Налаштування цієї властивості створює побічний ефект зміни внутрішнього стану-члена, тому переконайтеся, що ініціалізували початкове значення перед зміною стану-члена:
Примітка: Значення за замовчуванням цієї властивості є псевдовипадковим і змінюється під час виклику randomize(). Значення 0, задокументоване тут, є заповнювачем, а не фактичним початковим значенням за замовчуванням.
var rng = RandomNumberGenerator.new()
rng.seed = hash("Godot")
rng.state = 100 # Відновлення попереднього збереженого стану.
Поточний стан генератора випадкових чисел. Збережіть та відновіть цю властивість, щоб повернути генератор до попереднього стану:
var rng = RandomNumberGenerator.new()
print(rng.randf())
var saved_state = rng.state # Збереження поточного стану.
print(rng.randf()) # Зміна внутрішнього стану.
rng.state = saved_state # Відновлення стану.
print(rng.randf()) # Друкує те саме значення, що й раніше.
Примітка: Не встановлюйте для стану довільні значення, оскільки генератор випадкових чисел вимагає певних якостей для належної роботи. Його слід встановлювати лише значення, отримані з самої властивості стану. Щоб ініціалізувати генератор випадкових чисел довільними вхідними даними, використовуйте замість цього seed.
Примітка: Значення цієї властивості за замовчуванням є псевдовипадковим і змінюється під час виклику методу randomize. Значення 0, задокументоване тут, є тимчасовим, а не фактичним станом за замовчуванням.
Описи методів
int rand_weighted(weights: PackedFloat32Array) 🔗
Повертає випадковий індекс із нерівномірними вагами. Виводить помилку та повертає -1, якщо масив порожній.
var rng = RandomNumberGenerator.new()
var my_array = ["one", "two", "three", "four"]
var weights = PackedFloat32Array([0,5, 1, 1, 2])
# Виводить один із чотирьох елементів у `my_array`.
# Ймовірніше надрукувати «чотири», а рідше надрукувати «один».
print(my_array[rng.rand_weighted(weights)])
Повертає псевдо-рандом float між 0.0 і 1.0 (включаючи).
float randf_range(from: float, to: float) 🔗
Повертає псевдо-рандом, плаваючи між паром і парм до (включно).
float randfn(mean: float = 0.0, deviation: float = 1.0) 🔗
Повертає нормально розподілене псевдовипадкове число з плаваючою комою з заданого mean та стандартного deviation. Це також відоме як гаусівський розподіл.
Примітка: Цей метод використовує алгоритм перетворення Бокса-Мюллера.
Повертає псевдо-рандом 32-бітове ціле між 0 і 4294967295 (включаючи).
int randi_range(from: int, to: int) 🔗
Повертає псевдо-рандом 32-біт, підписаний цілим між парм і парм до (включно).
void randomize() 🔗
Налаштовує часову насінню для цього RandomКількістьGenerator. На відміну від @GlobalScope функції випадкових чисел, різні RandomКількістьGenerator екземпляри можуть використовувати різні насіння.