在JavaScript中指定一个范围内的随机数,避免阻塞数

在JavaScript中指定一个范围内的随机数,避免阻塞数,javascript,arrays,Javascript,Arrays,我有一个游戏,用户可以赢得一个额外的奖励,如果他们选择一个特定的数字从董事会 游戏大师为游戏选择一个范围,额外的奖品随机分配给一个数字 但是,无法分配额外奖金: 到“阻止的号码” 或者与另一个奖品相同的号码 我有一个粗略的方法来确保头奖不匹配 如何扩展此代码以覆盖所有5个额外奖品?我担心如果我只是复制函数5次,它会永远循环吗 是否最好在数组中创建游戏范围,然后在生成每个奖品时删除它们的值 var gameMinNum = 10; var gameMaxNum = 125; var gameB

我有一个游戏,用户可以赢得一个额外的奖励,如果他们选择一个特定的数字从董事会

游戏大师为游戏选择一个范围,额外的奖品随机分配给一个数字

但是,无法分配额外奖金:

  • 到“阻止的号码”
  • 或者与另一个奖品相同的号码
我有一个粗略的方法来确保头奖不匹配

如何扩展此代码以覆盖所有5个额外奖品?我担心如果我只是复制函数5次,它会永远循环吗

是否最好在数组中创建游戏范围,然后在生成每个奖品时删除它们的值

var gameMinNum = 10;
var gameMaxNum = 125;
var gameBlockedNum = [5,12,66,97,124,129,165,200]

var extraPrizeNum1 = 0;
var extraPrizeNum2 = 0;
var extraPrizeNum3 = 0;
var extraPrizeNum4 = 0;
var extraPrizeNum5 = 0;


function randomGenerator(xUpper,xLower)
{
  return Math.floor(Math.random()*(xUpper-xLower+1)+xLower);
}

function PrizeNum1() {

  extraPrizeNum1 = randomGenerator(gameMaxNum,gameMinNum);
  if (gameBlockedNum.includes(extraPrizeNum1)) {
    PrizeNum1();
  } 
}
您可以使用一个数组表示已使用的值,并使用一个数组表示所有价格

函数随机发生器(xUpper,xLower){
返回函数(){
返回Math.floor(Math.random()*(xUpper-xLower+1)+xLower);
};
}
函数getExtraPrices(随机、长度、阻塞){
选择的变量=新集合(已阻止);
返回数组。from({length},()=>{
var数;
while(selected.has(number=randomFn());
选中。添加(编号);
返回号码;
});
}
var gameMinNum=10,
gameMaxNum=125,
gameBlockedNum=[5,12,66,97,124,129,165,200],
ExtrapriceScont=5,
随机=随机生成器(gameMaxNum、gameMinNum),
extraPrices=getExtraPrices(随机、extraPrices查询、gameBlockedNum);

控制台日志(额外价格)为什么要将“额外价格”存储在单独的变量中(而不是像“阻止的数字”那样存储在数组中)?在游戏代码中,如果所选数字与奖品之一匹配,它将触发不同的祝贺消息等。。。我还将其他详细信息存储在数组中。我试图用上面的代码简化我的问题描述。