一个简单的算法,它接受两个INT并返回一个随机INT

时间:2013-02-08 05:32:23

标签: c++ c random

该功能将是这样的。

int generateSortOfRandomInt(int X, int Y){

/*
Your program

*/

return randomINT that is always the same for X and Y
}

如果这样会很好 generateSortOfRandomInt(5,15)!= generateSortOfRandomInt(15,5)

一个例子就像是

int value1 = generateSortOfRandomInt(1, 3);  // 546547
int value2 = generateSortOfRandomInt(3, 1);  // 134566
int value3 = generateSortOfRandomInt(1, 3);  // 546547 THE SAME AS value1
int value4 = generateSortOfRandomInt(2, 3);  // 646621

谢谢

5 个答案:

答案 0 :(得分:6)

使用哈希函数,例如

return std::hash<int>()(std::hash<int>()(x) + y);

答案 1 :(得分:6)

int generateSortOfRandomInt(int X, int Y)
{
    return (X * 0xcafebabe) ^ (Y * 0xdeadbeef);
}

答案 2 :(得分:2)

搜索2D的Perlin噪音。如果我记得正确,这将为同一输入提供相同的输出。

答案 3 :(得分:0)

你的问题很模糊。有一百万种不同的方法。

一些想法是: 将数字除以并移动小数点以创建数字。

然而,基于您如何根据作为参数给出的数字的顺序获得不同的结果。我会根据参数使用数字来左移或右移位 http://www.cprogramming.com/tutorial/bitwise_operators.html

答案 4 :(得分:-6)

以下是我提出的建议:

int generateSortOfRandomInt(int X, int Y)
{
    srand(x*x+y);

    return rand();
}