📄 random_numbers.sgml
字号:
<!-- ##### SECTION Title ##### -->Random Numbers<!-- ##### SECTION Short_Description ##### -->pseudo-random number generator<!-- ##### SECTION Long_Description ##### --><para>The following functions allow you to use a portable, fast and goodpseudo-random number generator (PRNG). It uses the Mersenne TwisterPRNG, which was originally developed by Makoto Matsumoto and TakujiNishimura. Further information can be found at <ulinkurl="http://www.math.keio.ac.jp/~matumoto/emt.html">www.math.keio.ac.jp/~matumoto/emt.html</ulink>.</para><para>If you just need a random number, you simply call the <function>g_random_*</function> functions, which will create a globally used #GRand and use the according <function>g_rand_*</function> functions internally. Whenever you need a stream of reproducible random numbers, you better create a #GRand yourself and use the <function>g_rand_*</function> functions directly, which will also be slightly faster. Initializing a #GRand with a certain seed will produce exactly the same series of random numbers on all platforms. This can thus be used as a seed for e.g. games.</para><para>The <function>g_rand*_range</function> functions will return high qualityequally distributed random numbers, whereas for example the<literal>(g_random_int()%max)</literal> approach often doesn'tyield equally distributed numbers.</para><para>GLib changed the seeding algorithm for the pseudo-random numbergenerator Mersenne Twister, as used by <structname>GRand</structname>and <structname>GRandom</structname>. This was necessary, because someseeds would yield very bad pseudo-random streams. Also thepseudo-random integers generated by<function>g_rand*_int_range()</function> will have aslightly better equal distribution with the new version of GLib.</para><para>The original seeding and generation algorithms, as found in GLib 2.0.x,can be used instead of the new ones by setting the environment variable<envar>G_RANDOM_VERSION</envar> to the value of '2.0'. Use theGLib-2.0 algorithms only if you have sequences of numbers generatedwith Glib-2.0 that you need to reproduce exactly.</para><!-- ##### SECTION See_Also ##### --><para></para><!-- ##### SECTION Stability_Level ##### --><!-- ##### STRUCT GRand ##### --><para>The #GRand struct is an opaque data structure. It should only beaccessed through the <function>g_rand_*</function> functions.</para><!-- ##### FUNCTION g_rand_new_with_seed ##### -->@seed: @Returns: <!-- ##### FUNCTION g_rand_new_with_seed_array ##### --><para></para>@seed: @seed_length: @Returns: <!-- ##### FUNCTION g_rand_new ##### -->@Returns: <!-- ##### FUNCTION g_rand_copy ##### --><para></para>@rand_: @Returns: <!-- ##### FUNCTION g_rand_free ##### -->@rand_: <!-- ##### FUNCTION g_rand_set_seed ##### -->@rand_: @seed: <!-- ##### FUNCTION g_rand_set_seed_array ##### --><para></para>@rand_: @seed: @seed_length: <!-- ##### MACRO g_rand_boolean ##### --><para>Returns a random #gboolean from @rand_. This corresponds to a unbiasedcoin toss.</para>@rand_: a #GRand.@Returns: a random #gboolean.<!-- ##### FUNCTION g_rand_int ##### -->@rand_: @Returns: <!-- ##### FUNCTION g_rand_int_range ##### -->@rand_: @begin: @end: @Returns: <!-- ##### FUNCTION g_rand_double ##### -->@rand_: @Returns: <!-- ##### FUNCTION g_rand_double_range ##### -->@rand_: @begin: @end: @Returns: <!-- ##### FUNCTION g_random_set_seed ##### -->@seed: <!-- ##### MACRO g_random_boolean ##### --><para>Returns a random #gboolean. This corresponds to a unbiased coin toss.</para>@Returns: a random #gboolean.<!-- ##### FUNCTION g_random_int ##### -->@Returns: <!-- ##### FUNCTION g_random_int_range ##### -->@begin: @end: @Returns: <!-- ##### FUNCTION g_random_double ##### -->@Returns: <!-- ##### FUNCTION g_random_double_range ##### -->@begin: @end: @Returns:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -