gpt4 book ai didi

Javascript : Exclude an element from a random set - (curiosity)

转载 作者:行者123 更新时间:2023-11-30 09:06:24 25 4
gpt4 key购买 nike

我有一个关于 javascript Math.random() 的问题:

我有(对于我正在构建的游戏)随机生成给定集合中的每个数字(即从 0 到 1000),每次我必须生成一个数字时,我必须检查该数字是否已经存在“生成”。

解决方案非常简单,只需考虑一个简单的算法即可检查随机整数是否已存在于生成的集合中。它循环生成数字,直到找不到为止。下面是一个片段:

/* ... */
for(var i = 0; i<upperBound; i++){
var randN = Math.floor(Math.random()*upperBound);
while(myRandomNumbers.contains(randN)){
loops++;
randN = Math.floor(Math.random()*upperBound);
}
myRandomNumbers.push(randN);
}
/* ... */

running example here

我想知道:这是实现这一目标的最佳方式吗?或者有什么方法可以在随机生成中排除特定集合,而不是循环直到生成“好”数字?

非常感谢大家!

最佳答案

  1. 按顺序生成一组数字。
  2. 随机排序列表。

这是一个使用 naive, biased sort 的例子:

for (var nums=[],i=0;i<1000;++i) nums[i]=i+1;
nums.sort(function(){ return Math.random()-0.5 });

然后您可以从numspop() 个数字来获得下一个“随机”数字,保证以前从未使用过。

关于Javascript : Exclude an element from a random set - (curiosity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692498/

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