我正在尝试创建一个函数,它接受 4 个参数并输出一个随机数。但我希望如此,如果输入相同的 4 个参数,您将始终得到相同的答案。该数字应介于 0 和最大参数之间。
function random (x,y,z,max) {
output = ;
return Math.floor(output * max);
}
我可以使用任何简单的论坛吗?我试着创建一个,但它看起来一点也不随意,如果你稍微改变一个参数,它看起来会非常相似。我希望它完全不同,但可以重复。
哈希函数:
function hash (input){
input = 'random'+input;
var hash = 0;
if (input.length == 0) return hash;
for (i = 0; i < input.length; i++) {
char = input.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash; // Convert to 32bit integer
}
return Math.abs(hash);
}
最佳答案
从另一个生成明显不可预测的数据称为“散列”;将其限制在一个范围内称为“模数”。这是使用求幂进行散列的简单方法:
const hashLim = () => {
const args = Array.prototype.slice.call(arguments);
const limit = args.shift();
var seed = limit - 1;
for (a in args) {
seed = Math.pow(args[a] + limit, seed) % limit
}
return seed;
}
document.write(hashLim(100, 4, 16, 64) + '<br/>')
document.write(hashLim(100, 5, 16, 64))
关于基于多个输入的Javascript可重复随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243919/