繁体   English   中英

如何使用概率并将它们插入我的其他 function?

[英]How do I use probability and insert them into my other function?

//Catchfish
function catchFish() {
  if (character === "steve") {
    // STEVE PROBABILITIES: cod (70%), salmon (20%), tropical (5%), puffer (5%)
    simulateCatch (70%, 20%, 5%, 5%);
  
  } else if (character === "alex") {
    // ALEX PROBABILITIES: cod (10%), salmon (10%), tropical (30%), puffer (50%)
    simulateCatch(10%, 10%, 30%, 50%);

  } else if (character === "villager") {
    // VILLAGER PROBABILITIES: cod (25%), salmon (25%), tropical (25%), puffer (25%)
    simulateCatch(25%, 25%, 25%, 25%);
  }
}

如何模拟Catch? 我不知道该怎么做并将概率发回给 catchFish

这个想法是生成一个介于 0 和 1 之间的随机数,然后减去每种鱼的每个连续概率,直到滚动值小于 0。但是请注意,这是假设概率在范围在 0 和 1 之间,总和为 1。 否则,它将无法正常工作。

 // Returns an index of the randomly selected item function simulateCatch(probabilities) { let roll = Math.random(); for (let i = 0; i < probabilities.length; i++) { roll -= probabilities[i]; if (roll <= 0) return i; } // never gets to this point, assuming the probabilities sum up to 1 } var fishArray = ["cod", "salmon", "tropical", "puffer"] //Catchfish function catchFish(character) { if (character === "steve") { // STEVE PROBABILITIES: cod (70%), salmon (20%), tropical (5%), puffer (5%) return simulateCatch ([0.7, 0.2, 0.05, 0.05]); } else if (character === "alex") { // ALEX PROBABILITIES: cod (10%), salmon (10%), tropical (30%), puffer (50%) return simulateCatch([0.1, 0.1, 0.3, 0.5]); } else if (character === "villager") { // VILLAGER PROBABILITIES: cod (25%), salmon (25%), tropical (25%), puffer (25%) return simulateCatch([0.25, 0.25, 0.25, 0.25]); } } function test() { console.log(fishArray[catchFish("steve")]) console.log(fishArray[catchFish("alex")]) } test()

您可以像这样定义 function

function simulateCatch(character,cod,salmon,tropical,puffer){
return `${character.toUpperCase()} PROBABILITIES: cod (${cod}%), salmon (${salmon}%), tropical (${tropical}%), puffer (${puffer})`;
}

并像这样更新你的鲶鱼

function catchFish() {
  if (character === "steve") {
    // STEVE PROBABILITIES: cod (70%), salmon (20%), tropical (5%), puffer (5%)
    simulateCatch (character,70, 20, 5, 5);
  
  } else if (character === "alex") {
    // ALEX PROBABILITIES: cod (10%), salmon (10%), tropical (30%), puffer (50%)
    simulateCatch(character,10, 10, 30, 50);

  } else if (character === "villager") {
    // VILLAGER PROBABILITIES: cod (25%), salmon (25%), tropical (25%), puffer (25%)
    simulateCatch(character,25, 25, 25, 25);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM