我正在尝试创建一个带有4个参数并吐出随机数的函数。但我想要它,所以如果输入相同的4个参数,你将总是得到相同的答案。数字应该在0和最大参数之间。
[query addDescendingOrder:@"EventSTDTime"];
我可以使用任何简单的forumala来获得这个吗?我尝试创建一个,但它看起来并不随机,如果你稍微改变一个参数,看起来会非常相似。我希望它完全不同,但可重复。
哈希函数:
function random (x,y,z,max) {
output = ;
return Math.floor(output * max);
}
答案 0 :(得分:3)
从另一个生成明显不可预测的数据称为"散列&#34 ;;将其限制在一个范围内称为" modulo"。这是使用取幂进行散列的简单方法:
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))
&#13;
答案 1 :(得分:0)
你可以对伪随机值使用一些自制的计算,比如这个例子用pi和仅取分形部分。
function Random(seed) {
var r = seed;
this.random = function () {
var v = r * Math.PI;
r = v - (v | 0);
return r;
}
this.random();
}
var i,
q = new Random(42),
r = new Random(42);
for (i = 0; i < 10; i++) {
document.write(q.random() +'<br>'+ r.random() + '<hr>');
}
&#13;