1、踢猴子

一定數(shù)量的猴子圍成一圈,以某個猴子開始從1號順序編號。兩個骰子隨機(jī)擲出一個數(shù),從1號開始數(shù),數(shù)到骰子數(shù)的猴子出局,從下一個猴子繼續(xù)從1開始數(shù),再次數(shù)到骰子數(shù)的猴子出局,以此類推,最后剩下一個猴子。計算每個猴子成為最后被剩下的概率?可同時計算多個猴子數(shù)的不同概率。

const calcNumPR = (count = 2) => (...monkeys) => monkeys.reduce((origin, item) => {

  // 生成指定個數(shù)的數(shù)字集合 [1, 2, 3]
  const originNumbers = [...new Array(item)].map((item, i) => i + 1);

  // 最后剩下號碼集合
  let lastNumbers = [];

  // 默認(rèn)2(count)個骰子,共 11(count * 6 - 1)種情況(2、3、4、5、6、7、8、9、10、11、12)
  for (let i = count; i <= count * 6; i++) {

    // 每次獲取全新集合
    const currentNumbers = Object.assign([], originNumbers);

    // 默認(rèn)去除位置為 -1,step 基數(shù)為當(dāng)前變量
    let [pos, step] = [-1, i];

    for (let j = 0; j < currentNumbers.length; j++) {

      // 計算需要去除號碼的位置
      pos += step;

      // 如果號碼位置超過當(dāng)前剩余數(shù),則再從頭開始數(shù)
      while (pos > currentNumbers.length - 1) {
        pos -= currentNumbers.length;
      }

      // 如果不是最后一個,則根據(jù)取出位置刪除剩余元素,之后當(dāng)前位置-1,當(dāng)前循環(huán)變量-1
      if (currentNumbers.length > 1) {
        currentNumbers.splice(pos, 1);
        pos--;
        j--;
      }

    }

    // 將每個骰子最后剩余號碼加入到集合中
    lastNumbers = [...lastNumbers, ...currentNumbers];

  }

  // 計算剩余號碼集合中每個數(shù)字在11次機(jī)會重的概率
  origin[item] = originNumbers.map(originNumber => {
    const targetNumbers = lastNumbers.filter(lastNumber => lastNumber == originNumber);
    return {[originNumber]: targetNumbers.length ? (targetNumbers.length / 11 * 100).toFixed(2) + '%' : 0};
  });

  return origin;

}, {});

const numbers = calcNumPR(1)(6, 8);

console.log(numbers);
// {
//   '6': [
//     {'1': '18.18%'},
//     {'2': 0},
//     {'3': 0},
//     {'4': '9.09%'},
//     {'5': '18.18%'},
//     {'6': '9.09%'},
//   ],
//   '8': [
//     {'1': '18.18%'},
//     {'2': 0},
//     {'3': '9.09%'},
//     {'4': 0},
//     {'5': 0},
//     {'6': '9.09%'},
//     {'7': '9.09%'},
//     {'8': '9.09%'},
//   ],
// };

以上為代碼演示,歡迎指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容