【发布时间】:2021-10-20 17:35:00
【问题描述】:
画出两个不同的数组:
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let newArr = [];
我想要实现的是通过伪随机循环将元素从arr 移动到newArr,这试图模仿Math.random() 的功能,除了唯一的随机性应该与固定的相反,哈希数。
我正在尝试这样的事情,但到目前为止没有运气:
const madeUpHash = "827354819373"
const floatIndex = "0."
const f = parseFloat(floatIndex + madeUpHash);
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
let ranNum = (f/i); // this points towards 0, meaning the next Math.Floor will eventually always retrieve index 0
let rand = Math.floor(ranNum * arr.length);
newArr.push(...arr.splice(rand, 1))
}
这不仅不起作用,而且非常可怕。
有没有可靠的方法来实现这一目标?
我的另一个想法是遍历散列的各个数字(在将它们转换为数组之后)并创建一个随机数,例如ranNum = i/madeUpHash[i],但它会在i >= madeUpHash[i] 时立即中断,因为它会返回一个更大的正整数不止一个。
有什么想法吗?谢谢。
【问题讨论】:
标签: javascript arrays loops random hash