繁体   English   中英

Mersenne Twister init_by_array()函数说明

[英]Mersenne Twister init_by_array() function clarification

我试图用32位种子实现跨平台一致的随机数生成。 大多数帖子都将我指向Mersenne Twister或编写我自己的实现。

源代码中,有一个称为void init_by_array()的函数。

此函数的唯一目的是扩展通过32位的种子吗?

自述文件

init_by_array(init_key,key_length)通过使用长度为key_kength的无符号32位整数的数组init_key []来初始化状态向量。 如果key_length小于624,则每个32位整数数组给出不同的初始状态向量。 如果您想要的种子空间大于32位字,这将很有用。

仅基于最后一句话就无法理解。

该代码似乎只能使用init_genrand()正常运行,并且似乎会产生一致的结果。

Mersenne Twister具有19937位的状态空间,可用于迭代生成的值序列。 如果使用32位整数对其进行初始化,则会将其限制为2 19937可能的起点中的2 32个,并且您将永远看不到大量的样本轨迹。 通过init_by_array()函数,可以为初始状态指定更多位,从而有可能实现MT能够生成的任何采样轨迹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM