【问题标题】:dropping random item based on chance根据机会掉落随机物品
【发布时间】:2014-03-15 18:01:24
【问题描述】:

所以我在做这个游戏,我想随机掉落物品,这是我以前做的

if(Math.random() > 0.5) //%50% 几率

{//代码在这里 }

这种方法的问题是我会不断地向游戏中添加越来越多的物品,所以我想创建更动态的方式,因为每次添加物品时我都需要重新输入整个功能......不仅要添加一个 if-else 语句,而且我需要更改所有 if 语句中的所有机会(总和应该是 100)

有什么想法吗?

【问题讨论】:

    标签: math random


    【解决方案1】:

    如果我正确理解了您的问题,那么您正在尝试将大量项目添加到数组中,并可能稍后将其删除。也许尝试编写一个名为“randomDrop”的函数,该函数接受包含项目的数组、可能被丢弃的项目的索引以及丢弃它的概率。

    例如,在伪代码中,

    define randomDrop(myItems, itemIndex, dropProbability) {
        if ( Math.random() < dropProbability ) {
            myItems.remove(itemIndex);
        }
    }
    

    然后你可以在任何需要的地方调用这个函数。

    【讨论】:

      【解决方案2】:

      您可以使用第一个随机数来确定物品是否掉落,使用第二个随机数来确定掉落的价值。

      // Drop occurred
      if(Math.random() > 0.5)
      {    
        var secondRandom = Math.Random();
        //something super valuable
        if(secondRandom  > 0.95)
        { ...  }
      
        //something less valuable
        else if(secondRandom  > 0.50)
        { ...  } 
      
        //least valuable
        else 
        { ...  }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多