gpt4 book ai didi

java - 一致的跨平台 (java .Net) PseudoRandom 生成器,如果种子相同

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:52 25 4
gpt4 key购买 nike

是否有一个标准的跨平台数字生成器/算法/库,如果使用相同的输入(在我的例子中是某种哈希),总是产生相同的伪随机数集?

理想情况下,我希望能够在任何目标机器上使用 Java 和 .Net 执行此跨平台操作,并获得相同的一致输出(模糊的随机整数)。

如果不可能,我会自己动手(我的随机性要求非常低,基本上是用来根据它的 ID 为某物分配不同的颜色 - 我只想始终为同一项目分配相同的颜色,无论我在什么系统上运行)。

最佳答案

有一种非常简单且广为人知的 RNG 算法“Multiply-with-Carry”,可以在我所知道的所有平台上轻松实现。它具有您要求的属性;随机性是否足够由您决定。

来自 Wikipedia :

An example of a simple pseudo-random number generator is the Multiply-with-carry method invented by George Marsaglia. It is computationally fast and has good (albeit not cryptographically strong) randomness properties.

这里是 C# 中极其简单的实现,您可以轻松适应其他语言:

static int m_w = 1337;      // Choose initialization value, must not be zero
static int m_z = 123123; // Choose initialization value, must not be zero

int GetRandom()
{
m_z = 36969 * (m_z & 65535) + (m_z >> 16);
m_w = 18000 * (m_w & 65535) + (m_w >> 16);
return (m_z << 16) + m_w; /* 32-bit result */
}

m_w和m_z的初始值就是种子。

关于java - 一致的跨平台 (java .Net) PseudoRandom 生成器,如果种子相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588210/

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