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)
教程¶
属性¶
|
||
|
方法¶
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 实例可以使用不同的种子。