gpt4 book ai didi

c - Mersenne Twister init_by_array() 函数说明

转载 作者:行者123 更新时间:2023-11-30 16:14:06 28 4
gpt4 key购买 nike

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

source code有一个名为 void init_by_array() 的函数。

此函数的唯一目的是扩展传递的种子为 32 位吗?

来自ReadMe

init_by_array(init_key, key_length) initializes the state vector by using an array init_key[] of unsigned 32-bit integers of length key_kength. If key_length is smaller than 624, then each array of 32-bit integers gives distinct initial state vector. This is useful if you want a larger seed space than 32-bit word.

仅根据最后一句话进行假设,无法理解这一点。

该代码似乎仅使用 init_genrand() 即可正常运行,并且似乎产生了一致的结果。

最佳答案

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

关于c - Mersenne Twister init_by_array() 函数说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836293/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com