gpt4 book ai didi

javascript - 创建具有 2 个唯一数字的 Javascript 数组

转载 作者:行者123 更新时间:2023-11-28 16:13:10 24 4
gpt4 key购买 nike

我正在尝试执行以下操作:

创建 2 个在一定范围内的唯一数字,且它们至少为 n更大/更小。

例如:

范围是0-600最小“差异”为 150

因此生成的数字可能是:[2,400]、[120,310]、[82,530]

但不是 [900,400] 或 [200,220]。

这就是我到目前为止所拥有的:

var posYArray   = [];

for(i=0; i < 2; i++){

var posY = (Math.random() * 200).toFixed();

if(i < 1){
posYArray.push(posY);
}else{

for(i=0; i < posYArray.length; i++){
if(posY < posYArray[i]+100){
posYArray.push(posY);
}else{
//Restart loop??
}
}

}

}

但这会随机使浏览器崩溃,而且当数字太接近时我不知道重新启动循环的好方法......

最佳答案

您可以分两步完成此操作。

  1. 生成您的第一个随机数。
  2. 减少随机数池,使其成为唯一可能有效的数字。
  3. 在缩减池中选择下一个随机数。

var upperBound = 200,
minDelta = 90,
firstRandom = Math.floor(Math.random() * upperBound);

var validPool = [];

for (var i = 0; i < upperBound; i++) {
if (i < firstRandom - minDelta || i > firstRandom + minDelta) {
validPool.push(i);
}
}

var secondRandom = validPool[Math.floor(Math.random() * validPool.length)];

jsFiddle .

可能比随机选择和比较慢,但至少有保证的运行时间:)

关于javascript - 创建具有 2 个唯一数字的 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276822/

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