我需要一个随机数生成算法,为特定输入生成一个随机数。但每次获得相同的输入时,它将生成相同的数字。如果这种算法在互联网上可用,或者我必须建立一个。如果存在,任何人都知道,请告诉我。 (c,c ++,java,c#或任何伪代码都会有所帮助)
提前致谢。
答案 0 :(得分:4)
您可能希望查看内置的Java类Random.该描述符合您的要求。
答案 1 :(得分:3)
通常,随机数生成器的标准实现取决于种子值。 您可以使用标准随机数,将种子值设置为输入的某个哈希函数。
C#示例:
string input = "Foo";
Random rnd = new Random(input.GetHashCode());
int random = rnd.Next();
答案 2 :(得分:2)
答案 3 :(得分:2)
Mersenne Twister算法是一个很好的可预测随机数生成器。大多数语言都有实现。
答案 4 :(得分:2)
怎么样..
public int getRandonNumber()
{
// decided by a roll of a dice. Can't get fairer than that!
return 4;
}
或者你每次都想要一个随机数?
: - )
答案 5 :(得分:1)
像this这样的代码应该对您有用:
MIN_VALUE + ((MAX_VALUE - MIN_VALUE +1) * RANDOM_INPUT / (MAX_VALUE + 1))
答案 6 :(得分:1)
所有伪随机数生成器(计算机上大多数RNG都是这样)将从起始输入即种子生成相同的数字序列。因此,您可以使用您选择的编程语言中的任何RNG。
鉴于您需要来自给定种子的一个样本,我将避开Mersenne Twister和其他具有良好统计特性的复杂RNG,因为您不需要它。您可以使用简单的LCG,也可以使用像MD5这样的哈希函数。 LCG的一个问题是,对于小种子,下一个值总是在同一个区域,因为模数不适用,所以如果您的输入值通常很小,我会使用MD5。