RandomNumberGenerator
继承: RefCounted < Object
提供生成伪随机数的方法。
描述
RandomNumberGenerator 是一个用于生成伪随机数的类。它目前使用 PCG32。
注意:底层算法属于实现细节,不应该对此产生依赖。
要根据时间相关种子生成(给定范围内的)随机浮点数:
var rng = RandomNumberGenerator.new()
func _ready():
var my_random_number = rng.randf_range(-10.0, 10.0)
教程
属性
| ||
|
方法
randf ( ) | |
randf_range ( float from, float to ) | |
randi ( ) | |
randi_range ( int from, int to ) | |
void | randomize ( ) |
属性说明
int seed = 0
根据给定的种子值初始化随机数生成器状态。给定的种子将给出一个可重现的伪随机数序列。
注意:RNG 没有雪崩效应,给定相似的种子可以输出相似的随机流。如果种子来自外部,请考虑使用哈希函数来提高种子质量。
注意:设置该属性会产生改变内部 state 的副作用,因此请确保在修改 state 之前初始化种子:
注意:该属性的默认值是伪随机的,会在调用 randomize 时改变。文档中记录的 0
是占位符,不是实际的默认种子。
var rng = RandomNumberGenerator.new()
rng.seed = hash("Godot")
rng.state = 100 # 恢复到之前保存的一些状态。
int state = 0
随机数生成器的当前状态。保存并恢复此属性,以将生成器恢复到之前的状态:
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
是占位符,不是实际的默认种子。
方法说明
float randf ( )
返回在 0.0
和 1.0
之间(含端点)的伪随机浮点数。
float randf_range ( float from, float to )
返回在 from
和 to
之间(含端点)的伪随机浮点数。
float randfn ( float mean=0.0, float deviation=1.0 )
使用具有指定 mean
和标准 deviation
的 Box-Muller 变换,返回一个正态分布的伪随机数。这也被称为高斯分布。
int randi ( )
返回在 0
和 4294967295
之间(含端点)的伪随机 32 位无符号整数。
int randi_range ( int from, int to )
返回在 from
和 to
之间(含端点)的伪随机 32 位无符号整数。
void randomize ( )
为这个 RandomNumberGenerator 实例设置基于时间的种子。与 @GlobalScope 随机数生成函数不同,不同的 RandomNumberGenerator 实例可以使用不同的种子。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.