美文网首页
1、踢猴子

1、踢猴子

作者: 杀破狼real | 来源:发表于2018-01-12 19:11 被阅读0次

一定数量的猴子围成一圈,以某个猴子开始从1号顺序编号。两个骰子随机掷出一个数,从1号开始数,数到骰子数的猴子出局,从下一个猴子继续从1开始数,再次数到骰子数的猴子出局,以此类推,最后剩下一个猴子。计算每个猴子成为最后被剩下的概率?可同时计算多个猴子数的不同概率。

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

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

  // 最后剩下号码集合
  let lastNumbers = [];

  // 默认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);

    // 默认去除位置为 -1,step 基数为当前变量
    let [pos, step] = [-1, i];

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

      // 计算需要去除号码的位置
      pos += step;

      // 如果号码位置超过当前剩余数,则再从头开始数
      while (pos > currentNumbers.length - 1) {
        pos -= currentNumbers.length;
      }

      // 如果不是最后一个,则根据取出位置删除剩余元素,之后当前位置-1,当前循环变量-1
      if (currentNumbers.length > 1) {
        currentNumbers.splice(pos, 1);
        pos--;
        j--;
      }

    }

    // 将每个骰子最后剩余号码加入到集合中
    lastNumbers = [...lastNumbers, ...currentNumbers];

  }

  // 计算剩余号码集合中每个数字在11次机会重的概率
  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%'},
//   ],
// };

以上为代码演示,欢迎指正!

相关文章

  • 1、踢猴子

    一定数量的猴子围成一圈,以某个猴子开始从1号顺序编号。两个骰子随机掷出一个数,从1号开始数,数到骰子数的猴子出局,...

  • ‘法宝’

    小猴子不想吃饭,要吃冰淇淋,一哭,妈妈就给了小猴子。小猴子不肯睡觉,对妈妈又踢又打,一哭,妈妈就抱起小猴子...

  • 宽容是一种美德

    春光明媚的下午,小猴子和小兔来到广场上踢足球,玩得不亦乐乎。 就在这时,小猴子猛踢一脚球,飞快地跑...

  • 踢球(850――更三)

    有一天,小白兔和小猴子在路上踢球,小白兔踢过来,小猴子抢过去。你踢我抢,你抢我踢,跑得气喘吁吁,它们眼里除了球什么...

  • 跆拳道旋风踢怎么踢,博砺教练讲解其中慢动作,少儿跆拳道教育

    一、跆拳道旋风踢怎么踢 二、跆拳道的常见动作 三、跆拳道的掌法 跆拳道旋风踢怎么踢 1、跆拳道旋风踢怎么踢 1.1...

  • 瑜伽日记丨 《 温柔的猛烈式 》

    如果岁月是个弯曲的河流,我有份把生命还给热爱的惊喜。 ------ 题 记 约莫着是太上老君的炼丹炉,又被猴子踢...

  • 【连载】《悟净传》第四章 八戒寻佛法

    “死猪,起床了,再睡,又长肉了啊。”悟空踢了踢八戒的肥肥的屁股。 “你个死猴子,大清早的,猴叫个啥啊...

  • 跆拳道十大基础腿法

    正踢 前踢 横踢 下劈 侧踢 勾踢·侧摆踢 推踢 后踢 后旋踢 双飞踢 跆拳...

  • 职场如球场:学会踢球和学会进球一样重要

    踢球,就是踢活儿。 具体的说,就是甩掉工作场景中,你身上的那些猴子。 在职场踢球好不好? 这个真不一定。 大家别拿...

  • 做好管理,别让猴子跳回肩上

    导读: 1、来回跳的猴子 2、让猴子回到员工身上 3、管理猴子的原则 01 来回跳的猴子 “猴子理论”是管理学的一...

网友评论

      本文标题:1、踢猴子

      本文链接:https://www.haomeiwen.com/subject/wwzfoxtx.html