2018-09-21 19:32:17 +08:00
<?xml version="1.0" encoding="UTF-8" ?>
2020-02-01 09:03:48 +08:00
<class name= "RandomNumberGenerator" inherits= "Reference" version= "4.0" >
2018-09-21 19:32:17 +08:00
<brief_description >
2019-04-02 17:38:03 +08:00
A class for generating pseudo-random numbers.
2018-09-21 19:32:17 +08:00
</brief_description>
<description >
2019-06-22 07:04:47 +08:00
RandomNumberGenerator is a class for generating pseudo-random numbers. It currently uses [url=http://www.pcg-random.org/]PCG32[/url].
[b]Note:[/b] The underlying algorithm is an implementation detail. As a result, it should not be depended upon for reproducible random streams across Godot versions.
2019-06-30 05:59:22 +08:00
To generate a random float number (within a given range) based on a time-dependant seed:
[codeblock]
var rng = RandomNumberGenerator.new()
func _ready():
rng.randomize()
var my_random_number = rng.randf_range(-10.0, 10.0)
[/codeblock]
2018-09-21 19:32:17 +08:00
</description>
<tutorials >
2020-10-15 00:03:29 +08:00
<link title= "Random number generation" > https://docs.godotengine.org/en/latest/tutorials/math/random_number_generation.html</link>
2018-09-21 19:32:17 +08:00
</tutorials>
<methods >
2018-12-13 22:12:25 +08:00
<method name= "randf" >
<return type= "float" >
</return>
<description >
2019-06-22 07:04:47 +08:00
Generates a pseudo-random float between [code]0.0[/code] and [code]1.0[/code] (inclusive).
2018-12-13 22:12:25 +08:00
</description>
</method>
2018-12-03 22:43:14 +08:00
<method name= "randf_range" >
2018-11-13 18:06:50 +08:00
<return type= "float" >
2018-09-21 19:32:17 +08:00
</return>
2018-11-13 18:06:50 +08:00
<argument index= "0" name= "from" type= "float" >
</argument>
<argument index= "1" name= "to" type= "float" >
</argument>
2018-09-21 19:32:17 +08:00
<description >
2019-06-22 07:04:47 +08:00
Generates a pseudo-random float between [code]from[/code] and [code]to[/code] (inclusive).
2018-09-21 19:32:17 +08:00
</description>
</method>
2019-03-14 18:53:08 +08:00
<method name= "randfn" >
<return type= "float" >
</return>
<argument index= "0" name= "mean" type= "float" default= "0.0" >
</argument>
<argument index= "1" name= "deviation" type= "float" default= "1.0" >
</argument>
<description >
2019-06-22 07:04:47 +08:00
Generates a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-distributed[/url] pseudo-random number, using Box-Muller transform with the specified [code]mean[/code] and a standard [code]deviation[/code]. This is also called Gaussian distribution.
2019-03-14 18:53:08 +08:00
</description>
</method>
2018-12-13 22:12:25 +08:00
<method name= "randi" >
<return type= "int" >
</return>
<description >
2019-06-22 07:04:47 +08:00
Generates a pseudo-random 32-bit unsigned integer between [code]0[/code] and [code]4294967295[/code] (inclusive).
2018-12-13 22:12:25 +08:00
</description>
</method>
2018-12-03 22:43:14 +08:00
<method name= "randi_range" >
<return type= "int" >
</return>
<argument index= "0" name= "from" type= "int" >
</argument>
<argument index= "1" name= "to" type= "int" >
</argument>
<description >
2019-06-22 07:04:47 +08:00
Generates a pseudo-random 32-bit signed integer between [code]from[/code] and [code]to[/code] (inclusive).
2018-12-03 22:43:14 +08:00
</description>
</method>
2018-09-21 19:32:17 +08:00
<method name= "randomize" >
<return type= "void" >
</return>
<description >
2018-11-13 18:06:50 +08:00
Setups a time-based seed to generator.
2018-09-21 19:32:17 +08:00
</description>
</method>
</methods>
<members >
2019-06-29 18:38:01 +08:00
<member name= "seed" type= "int" setter= "set_seed" getter= "get_seed" default= "-6398989897141750821" >
2019-02-18 16:45:10 +08:00
The seed used by the random number generator. A given seed will give a reproducible sequence of pseudo-random numbers.
2019-04-02 17:38:03 +08:00
[b]Note:[/b] 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.
2018-09-21 19:32:17 +08:00
</member>
</members>
<constants >
</constants>
</class>