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

标签 javascript random

我正在尝试创建一个函数,它接受 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/

相关文章:

python - 从 N 个平均值和 N 个西格玛的列表中生成 N 个样本的数组

javascript - 如何使用 Phantomjs 评估从文档中返回任何内容?

javascript - 重命名图层的 Photoshop 脚本使它们全部可见

javascript - 过滤对象结果的经济方式

mysql - 在具有单独 LIMIT 语句的 MySQL UNION 查询中使用 ORDER BY RAND()

java - 如何检查一个整数是否在隐藏随机整数的 5 个数字之内?

javascript - 如何从 javascript 打开 fancybox。

javascript - 等宽字体字符串宽度

java - 如何随机执行一段代码并统计次数?

algorithm - 将均匀分布转换为肥尾分布