gpt4 book ai didi

javascript - Math.random 永远不会生成与其他 Math.random 相同的数字

转载 作者:行者123 更新时间:2023-12-01 01:53:28 29 4
gpt4 key购买 nike

我有 4 个 Math.random 生成器。每个人从数组中选取 1 个 X 对象。

  var randomItem1 = projects[Math.floor(Math.random()*projects.length)];
var randomItem2 = projects[Math.floor(Math.random()*projects.length)];
var randomItem3 = projects[Math.floor(Math.random()*projects.length)];
var randomItem4 = projects[Math.floor(Math.random()*projects.length)];

如何编写一个函数来防止 Math.random 生成与其他 Math.random 生成器相同的数字。

我的猜测:创建一个循环遍历 var randomItem 1 till 4 的循环。如果它发现 1 个或多个输出相同,它将为 1 个或多个重复输出重新生成一个新输出。

还有其他建议吗?

编辑:这是一个网站。

最佳答案

感谢提出这个有趣的问题。我总是使用一个库来做这类事情,所以弄清楚它很有趣。

var projects
var randomProjects

function getRandomProjects(projects, sampleSize) {
var projectsClone = projects.slice();
var randomItems = [];
while (sampleSize--) {
randomItems.push(
projectsClone.splice(Math.floor(Math.random()*projectsClone.length), 1)[0]
);
}
return randomItems;
}

projects = ['1st project', '2nd project', '3rd project', '4th project', '5th project', '6th project'];
randomProjects = getRandomProjects(projects, 4);

randomProjects.forEach(function(randomProject) {
console.log(randomProject);
});

projectsClone.splice(...)projectsClone 中删除随机项目并将其作为数组中的单个项目返回 ( [<project>] )。因此,在循环的下一次迭代中,无法再选择该值 ( <project> )。

但是,如果您在生产代码中使用它,我建议使用库。例如losdash's _.sampleSize(projects, 4)

关于javascript - Math.random 永远不会生成与其他 Math.random 相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233700/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com