有没有简单的方法可以随机洗牌 JavaScript 数组但固定到给定键

Is there any easy way to shuffle a JavaScript array randomly but fixed to a given key?

本文关键字:数组 JavaScript 方法 简单 随机 有没有      更新时间:2023-09-26

假设我有一个JavaScript数组:

var my_arr = [1,2,3,4,5,6];

有很多方法可以洗牌,假设我已经有一个函数shuffle,像这样:

shuffle(my_arr);
// The array might be like [1,5,4,3,2,6];

但是当我再次运行它时,顺序只是改变了。我想知道洗牌是否可以固定为给定值(数字、字符串,甚至任何东西(。如果键是相同的键,我需要每次结果都相同。例如:

var my_arr = [1,2,3,4,5,6];
function shuffle_by_key(arr, key){....}
var new_arr1 = shuffle_by_key(my_arr, 1); 
var new_arr2 = shuffle_by_key(my_arr, 2);
var new_arr3 = shuffle_by_key(my_arr, 1);

new_arr1应该与new_arr3相同,因为它们是由同一个键"1"生成的。

  1. 在 Javascript 中实现哈希(md5 或其他(函数
  2. 对输入进行哈希"盐"哈希处理,因为给定输入的哈希值应始终相同,并生成伪随机数
  3. 使用哈希输出来确定洗牌,也许通过使用每个 X 位数字迭代剩余的索引并将它们删除到输出数组中
  4. 如果哈希数字用完,请根据需要重新哈希