算法-连胜概率问题-10把连胜3把概率

本文探讨了一位朋友提出的连胜概率问题,即小明在每天玩10盘王者荣耀时,胜负随机,胜率为50%,如何用JS模拟计算至少一次3连胜的概率。解题思路采用穷举法,将问题转化为二叉树问题,通过遍历二叉树的叶子节点来找出满足条件的情况,最终计算概率。文章提到,该算法可以通过裁剪法进一步优化。
摘要由CSDN通过智能技术生成

算法-连胜概率问题-10把连胜3把概率

有一位朋友突然问我一道连胜的概率问题,自己研究一下,和大家分享,同时记录一下。

问题描述

小明每天玩10盘王者荣耀,且胜负完全随机(胜率50%),请用JS写一个模拟算法,算出小明今天获得过至少一次3连胜的概率,并指出该算法的时间与空间复杂度。

解题思路
  1. 简单暴力 穷举法
  2. 枚举找规律
    这里采用穷举法(为了提高效率后期可以考虑“裁剪分支”)

10把游戏连续赢3把的概率,输赢概率百分之五十
可以将问题转化成一棵二叉树问题
问二叉树的根结点data为3,左子树根为赢,左子树根data为根结点data减去1,即为2,右子树根节点为输,右子树根data为重置为3,当某结点data为0时候,它以下所有结点data均为0
最终,求解叶子结点中 data为0与叶子总数的比例

public class DemoTest {
   

    private final static Integer INIT_WIN_COUNT=3;

    public static void main(String[] args) {
   
        execute(10,INIT_WIN_COUNT);
    }

    private static void execute(Integer level,Integer winCount){
   
        GameTree gameTree = buildTree(level, winCount);
        System.out.println("满足条件的次数是:"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值