Improve RandomNumberGenerator docs.

Clarified behavior of a few methods. Added implementation notes so
that developers not familiar with RNGs are alerted to common pitfalls.

(cherry picked from commit ae1393acae)
This commit is contained in:
toasteater 2019-04-02 17:38:03 +08:00 committed by Rémi Verschelde
parent a033640276
commit 8d87f624eb
1 changed files with 6 additions and 4 deletions

View File

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<class name="RandomNumberGenerator" inherits="Reference" category="Core" version="3.1"> <class name="RandomNumberGenerator" inherits="Reference" category="Core" version="3.1">
<brief_description> <brief_description>
A class for generation pseudo-random numbers. A class for generating pseudo-random numbers.
</brief_description> </brief_description>
<description> <description>
RandomNumberGenerator is a class for generating pseudo-random numbers. It currently uses PCG32. The underlying algorithm is an implementation detail. As a result, it should not be depended upon for reproducible random streams across Godot versions.
</description> </description>
<tutorials> <tutorials>
</tutorials> </tutorials>
@ -14,7 +15,7 @@
<return type="float"> <return type="float">
</return> </return>
<description> <description>
Generates pseudo-random float between '0.0' and '1.0'. Generates pseudo-random float between '0.0' and '1.0', inclusive.
</description> </description>
</method> </method>
<method name="randf_range"> <method name="randf_range">
@ -25,14 +26,14 @@
<argument index="1" name="to" type="float"> <argument index="1" name="to" type="float">
</argument> </argument>
<description> <description>
Generates pseudo-random float between [code]from[/code] and [code]to[/code]. Generates pseudo-random float between [code]from[/code] and [code]to[/code], inclusive.
</description> </description>
</method> </method>
<method name="randi"> <method name="randi">
<return type="int"> <return type="int">
</return> </return>
<description> <description>
Generates pseudo-random 32-bit unsigned integer between '0' and '4294967295'. Generates pseudo-random 32-bit unsigned integer between '0' and '4294967295', inclusive.
</description> </description>
</method> </method>
<method name="randi_range"> <method name="randi_range">
@ -57,6 +58,7 @@
<members> <members>
<member name="seed" type="int" setter="set_seed" getter="get_seed"> <member name="seed" type="int" setter="set_seed" getter="get_seed">
The seed used by the random number generator. A given seed will give a reproducible sequence of pseudo-random numbers. The seed used by the random number generator. A given seed will give a reproducible sequence of pseudo-random numbers.
[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.
</member> </member>
</members> </members>
<constants> <constants>