Ios 在Swift中随机生成战利品
为清晰起见进行了更新 我正在制作一个游戏,并创建了一个JSON配置文件,在这里我可以配置设置,例如任何给定级别的掉落物品种类。我还配置了(在一个JSON ROOT数组中)每个物品的频率。我想要一枚硬币在30%的时间里掉落,一颗心在50%的时间里掉落到1级。所以我将硬币的频率设置为0.3,心脏的频率设置为0.5。并非每个等级的所有战利品都会掉落(某些等级的掉落频率可能为0.0) 当我让我的ObjectFactory生成一个给定的战利品时,我如何确保一枚硬币下降0.3%(或30%)的时间和一颗心下降0.5%或50%的时间?我知道我可以生成一个介于1和100之间或0.0和1.0之间的数字。那又怎么样 如果我的随机数为0.7,这意味着什么?我是生硬币还是生心脏 我真的必须这样做吗Ios 在Swift中随机生成战利品,ios,swift,sprite-kit,swift2,Ios,Swift,Sprite Kit,Swift2,为清晰起见进行了更新 我正在制作一个游戏,并创建了一个JSON配置文件,在这里我可以配置设置,例如任何给定级别的掉落物品种类。我还配置了(在一个JSON ROOT数组中)每个物品的频率。我想要一枚硬币在30%的时间里掉落,一颗心在50%的时间里掉落到1级。所以我将硬币的频率设置为0.3,心脏的频率设置为0.5。并非每个等级的所有战利品都会掉落(某些等级的掉落频率可能为0.0) 当我让我的ObjectFactory生成一个给定的战利品时,我如何确保一枚硬币下降0.3%(或30%)的时间和一颗心下降
//30 and 80 came from the JSON file
if (rngNumber < 30)
//spawn coin
else if (rngNumber >= 30 && < 80)
//spawn heart
else
//spawn nothing
//30和80来自JSON文件
如果(rngNumber<30)
//产生硬币
否则如果(rngNumber>=30&<80)
//繁殖心脏
其他的
//一无所获
看,问题是,当我从一个层次到另一个层次时,这是行不通的。因为如果我在第2级将心脏更改为90%,那么代码如下所示:
if (rngNumber <= 89)
//spawn heart
else
//do nothing
if(rngNumber这是如何在Swift中获取随机数:
从这里开始,比较文件中的值和生成的数字就很容易了。如果随机数低于阈值,则您会丢弃该赃物。好,这就是您的操作方法:
首先,你不能用一个数字,你需要一个范围。
因此,在我的配置中,我创建了“频率”:(1,50)
这意味着项目1的数字介于1和50之间,项目2的数字介于51和70之间,项目3的数字介于71-100之间(你明白了)
然后我将每个频率反序列化为一个元组(Int,Int)
然后我生成一个介于1100和过滤器之间的随机数,如下所示:
let rand = RandomInt(min: 1, max: 100)
var loot: Loot?
let lootData = lootConfigArray.filter{rand >= $0.frequency.0 && rand <= $0.frequency.1}.first
rand=RandomInt(最小值:1,最大值:100)
战利品:战利品?
让lootData=lootConfigArray.filter{rand>=$0.frequency.0&&rand你能给出更多的细节吗?很难理解你想要什么样的算法来获得特权。通常人们认为他们对如何实现目标感到困惑,而实际上他们对自己想要的东西感到困惑。在我看来,这里就是这种情况,而这正是你想首先弄清楚的地方示例场景-删除10%的项目:生成编号。如果编号<0.1,则删除项目,否则不删除项目。或者问题在哪里?您应该澄清您的意图。为清晰起见进行了更新-如果您有其他时间,希望获得一些反馈,谢谢!