c# - 什么样的随机数生成系统会为给定的 key 返回一个结果?

标签 c# c++ random hash generator

我正在寻找一个 crossplarform 标准随机数生成器,它在用种子初始化后总是为给定的整数键返回相同的随机

并且在不生成任何类型的键/值映射的情况下,此时内存保护比处理器使用更重要。

假设我们用种子(不是 key )初始化生成器。

然后我们可以检索任意键的结果。每次调用将始终为相同的键返回相同的结果。

例如:

KeyBasedRandomGenerator r1 = new KeyBasedRandomGenerator(MY_SEED);
KeyBasedRandomGenerator r2 = new KeyBasedRandomGenerator(MY_SEED);
int test = r1.Get(500);
for (int key = 0; key < 10000000; ++key)
{
    assert ( r1.Get(key) == r2.Get(key));
}
assert ( r1.Get(500) == test);

是否有适用于 C# 和 C++ 的实现?他们叫什么?

是否有可能找到在某个范围内始终返回相同结果的变体:

    assert ( r.Get(key, 0, 15) == r.Get(key, 0, 15));

编辑:我了解哈希的作用以及通常的随机生成器的工作原理。我正在寻找的是使用 key 的标准化随机数生成器函数或实现(库)。

如果对于这种情况没有比“哈希函数”更具体的术语,那么它就是哈希。

最佳答案

好吧,它们被称为“哈希函数”。 key 不必只是一个数字。它可以是任何数据 block 。哈希函数对某个任意输入执行复杂的逐位计算,并为输出生成单个值。出于所有实际目的,生成的哈希值将随机出现。

关于c# - 什么样的随机数生成系统会为给定的 key 返回一个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077960/

相关文章:

c# - IEnumerable 的早期执行

c# - SQL 中的 XML 字段

c++ - 如何在执行期间停止 C++ 应用程序以调试到 dll?

c++ - SuSE Linux网络异常系统日志文件

php - 根据邮政编码向用户显示相同结果的最佳方式是什么?

c# - 如何在 C# 中获取我的 URL 的一部分/子域?

c# - 如何将 DispatcherObject (BitmapSource) 复制到不同的线程中?

c++ - 如何定义 bool 运算符来比较类的精确属性?

javascript - 在Wordpress网站上点击图片播放随机声音?

algorithm - 在 O(1) 空间中从流中选择随机项