RandomNumberGenerator.xml 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <class name="RandomNumberGenerator" inherits="Reference" category="Core" version="3.1.2">
  3. <brief_description>
  4. A class for generating pseudo-random numbers.
  5. </brief_description>
  6. <description>
  7. RandomNumberGenerator is a class for generating pseudo-random numbers. It currently uses [url=http://www.pcg-random.org/]PCG32[/url].
  8. [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.
  9. To generate a random float number (within a given range) based on a time-dependant seed:
  10. [codeblock]
  11. var rng = RandomNumberGenerator.new()
  12. func _ready():
  13. rng.randomize()
  14. var my_random_number = rng.randf_range(-10.0, 10.0)
  15. [/codeblock]
  16. </description>
  17. <tutorials>
  18. </tutorials>
  19. <methods>
  20. <method name="randf">
  21. <return type="float">
  22. </return>
  23. <description>
  24. Generates pseudo-random float between '0.0' and '1.0', inclusive.
  25. </description>
  26. </method>
  27. <method name="randf_range">
  28. <return type="float">
  29. </return>
  30. <argument index="0" name="from" type="float">
  31. </argument>
  32. <argument index="1" name="to" type="float">
  33. </argument>
  34. <description>
  35. Generates pseudo-random float between [code]from[/code] and [code]to[/code], inclusive.
  36. </description>
  37. </method>
  38. <method name="randfn">
  39. <return type="float">
  40. </return>
  41. <argument index="0" name="mean" type="float" default="0.0">
  42. </argument>
  43. <argument index="1" name="deviation" type="float" default="1.0">
  44. </argument>
  45. <description>
  46. Generates normally(gaussian) distributed pseudo-random number, using Box-Muller transform with the specified [code]mean[/code] and a standard [code]deviation[/code].
  47. </description>
  48. </method>
  49. <method name="randi">
  50. <return type="int">
  51. </return>
  52. <description>
  53. Generates pseudo-random 32-bit unsigned integer between '0' and '4294967295', inclusive.
  54. </description>
  55. </method>
  56. <method name="randi_range">
  57. <return type="int">
  58. </return>
  59. <argument index="0" name="from" type="int">
  60. </argument>
  61. <argument index="1" name="to" type="int">
  62. </argument>
  63. <description>
  64. Generates pseudo-random 32-bit signed integer between [code]from[/code] and [code]to[/code] (inclusive).
  65. </description>
  66. </method>
  67. <method name="randomize">
  68. <return type="void">
  69. </return>
  70. <description>
  71. Setups a time-based seed to generator.
  72. </description>
  73. </method>
  74. </methods>
  75. <members>
  76. <member name="seed" type="int" setter="set_seed" getter="get_seed">
  77. The seed used by the random number generator. A given seed will give a reproducible sequence of pseudo-random numbers.
  78. [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.
  79. </member>
  80. </members>
  81. <constants>
  82. </constants>
  83. </class>