【发布时间】:2016-05-24 10:46:47
【问题描述】:
我需要根据 2 个输入值 X 和 Y 生成一个伪随机数。给定相同的 X 和 Y 值,我需要得到相同的结果。结果应介于 0 和 1 之间。
到目前为止,我有这个:
const int a = 0x7fffffff / 48271;
const int b = 0x7fffffff % 48397;
float rand(int x, int y) {
float seed, result;
seed = x ^ ((y << 1) & 0x2AAAAAAA) ^ ((y >> 1) & 0x33333333);
result = 48353 * (seed % a) - b * (seed / a);
return (result);
}
它给了我一个结果,但不是我想要的。我是根据我在网上看到的随机东西拼凑而成的,所以不知道它是否真的有什么好处。
【问题讨论】:
-
您的问题是什么?很难猜出“不是我要找的”是什么意思。好的随机数生成器也不能通过在网上随机查找来构建。
-
使用无符号数学是很好的第一步。
-
我认为你想要的hash 比 RNG 更接近。
-
这两种输入类型是
int(可能是32、64、16位)还是signed 32-bit?