基于多个输入的Javascript可重复随机数

时间:2015-12-12 19:19:40

标签: javascript random

我正在尝试创建一个带有4个参数并吐出随机数的函数。但我想要它,所以如果输入相同的4个参数,你将总是得到相同的答案。数字应该在0和最大参数之间。

[query addDescendingOrder:@"EventSTDTime"];

我可以使用任何简单的forumala来获得这个吗?我尝试创建一个,但它看起来并不随机,如果你稍微改变一个参数,看起来会非常相似。我希望它完全不同,但可重复。

哈希函数:

function random (x,y,z,max) {
    output = ;
    return Math.floor(output * max); 
}

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

你可以对伪随机值使用一些自制的计算,比如这个例子用pi和仅取分形部分。

&#13;
&#13;
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;
&#13;
&#13;