【刷题篇】抽牌获胜的概率

这篇具有很好参考价值的文章主要介绍了【刷题篇】抽牌获胜的概率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、题目

谷歌面试题

将面值1-N的牌组成一组
每次从组中等概率的抽出1-N中的一张
下次抽会换一个新的组,有无限组
当抽到的牌累加和<a时,将一直抽牌
当累加和>=a且<b时,你将获胜
当累加和>=b时,你将失败
给定的参数N,a,b 返回获胜的概率
数字为1-n的扑克牌组成一组,每次从1-n的一组牌中等概率抽中一张牌,下一次抽会从另,动态规划,算法,leetcode

二、题解

核心思想
数字为1-n的扑克牌组成一组,每次从1-n的一组牌中等概率抽中一张牌,下一次抽会从另,动态规划,算法,leetcode

2.1 递归

public static double f2(int N,int a,int b){
    if(N < 1 || a >= b || a < 0){
        return 0.0;
    }
    if(b-a>=N){
        return 1.0;
    }
    return p2(0,N,a,b);
}
//cur 表示目前累加和
    public static double p2(int cur,int N,int a,int b){
        if(cur>=a&&cur<b){
            return 1.0;
        }
        if(cur>=b){
            return 0.0;
        }
        double w=0.0;
        for (int i = 1; i <=N ; i++) {
            w+=p2(cur+i,N,a,b);
        }
        return w/N;
    }

2.2 优化递归

优化递归函数中的for循环, 因为计算累加和为cur的获胜概率的时候,需要通过for循环枚举,我们想做的是优化这个循环过程
数字为1-n的扑克牌组成一组,每次从1-n的一组牌中等概率抽中一张牌,下一次抽会从另,动态规划,算法,leetcode

 public static double f3(int N,int a,int b){
        if(N < 1 || a >= b || a < 0){
            return 0.0;
        }
        if(b-a>=N){
            return 1.0;
        }
        return p3(0,N,a,b);
    }
    public static double p3(int cur,  int N,int a,int b){
        if(cur>=a&&cur<b){
            return 1.0;
        }
        if(cur>=b){
            return 0.0;
        }
        if(cur==a-1){
            return 1.0*(b-a)/N;
        }
        double w=p3(cur+1,N,a,b)+p3(cur+1,N,a,b)*N;
        if(cur+1+N<b){
            w-=p3(cur+N+1,N,a,b);
        }
        return w/N;
    }

2.3 动态规划

将2.2 的代码改成动态规划即可文章来源地址https://www.toymoban.com/news/detail-736898.html

 public static double f4(int N,int a,int b){
        if(N < 1 || a >= b || a < 0){
            return 0.0;
        }
        if(b-a>=N){
            return 1.0;
        }
        double[] dp=new double[b];
        for (int i = a; i <b ; i++) {
            dp[i]=1.0;
        }
        if(a-1>=0){
            dp[a-1]=1.0*(b-a)/N;
        }
        for (int cur = a-2; cur >=0 ; cur--) {
            double w = dp[cur + 1] + dp[cur + 1] * N;
            if (cur + 1 + N < b) {
                w -= dp[cur + 1 + N];
            }
            dp[cur] = w / N;
        }
        return dp[0];
    }

到了这里,关于【刷题篇】抽牌获胜的概率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 剑指 Offer 61. 扑克牌中的顺子

    剑指 Offer 61. 扑克牌中的顺子 排序,计算0的个数,看其他的数字是不是连续的,不连续的话用0补,如果0的个数不够补了,就无法构成顺子。

    2024年02月11日
    浏览(36)
  • 剑指 Offer ! 61. 扑克牌中的顺子

    参考资料:力扣K神的讲解 剑指 Offer 61. 扑克牌中的顺子 简单 351 相关企业 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 1: 输入: [1,2

    2024年02月13日
    浏览(38)
  • 数据库编程大赛:一条SQL计算扑克牌24点

    你是否在寻找一个平台,能让你展示你的SQL技能,与同行们一较高下?你是否渴望在实战中提升你的SQL水平,开阔你的技术视野?如果你对这些都感兴趣,那么本次由NineData主办的《数据库编程大赛》,将是你的最佳选择! 本次数据库编程大赛的奖项安排:一等奖(1人)、二

    2024年02月03日
    浏览(41)
  • 【数据结构与算法】杨辉三角,相同字符的截取以及扑克牌

    ✨个人主页:bit me ✨当前专栏:数据结构 ✨每日一语:不要等到了你的人生垂暮,才想起俯拾朝花,且行且珍惜。 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5 输出: [[1],[1,1

    2024年02月03日
    浏览(43)
  • 张泽鹏:用PostgreSQL征服24点扑克牌算法的数据库高手

    参赛选手 :张泽鹏 个人简介 :杭州隐函科技有限公司联创,技术负责人 参赛数据库 :PostgreSQL 性能评测 :百万级数据代码性能评测 2.46秒 综合得分 :82.2 以下是张泽鹏选手的代码说明思路简介: 本算法用了取巧的方法:提前计算好4个1~10数值求24的结果,执行查询时,直

    2024年02月02日
    浏览(43)
  • python123输出N以内的所有素数&哥德巴赫猜想&扑克牌游戏

    描述 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬ 编程找出N(即小

    2023年04月18日
    浏览(39)
  • 【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年02月21日
    浏览(38)
  • 小啊呜产品读书笔记001:《邱岳的产品手记-16》第30讲产品案例分析:Primer的扑克牌交互 & 第31讲 产品分析的套路(下):如何出解决方案?

    叮嘟!这里是小啊呜的产品进阶读书笔记整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! Google 出品的 Primer,让你 5 分钟学市场营销 (1)这种交互方式看起来很像在玩儿扑克牌,所以我们就姑且管它叫 扑克牌交互 ,这其实也是 卡片设计 的一种。

    2024年02月07日
    浏览(48)
  • 蓝桥杯刷题篇①

    前言:hello各位童学们好呀!许久不见!本文为本人的蓝桥杯OJ的刷题笔记!文章隶属于专栏蓝桥杯,该专栏的目的是为了记录自己的刷题记录和学习过程,激励自己不断前行,为明年的ACM、ICPC、蓝桥杯等比赛做足准备,也希望可以帮助到一些同样在刷题道路上的小伙伴们!

    2024年02月09日
    浏览(51)
  • 【刷题篇】链表(上)

    前段时间我们学习了单向链表和双向链表,本期将带来3道与链表相关的OJ题来巩固对链表的理解。话不多说,让我们进入今天的题目吧! 🚀本期的题目有: 反转单链表 、 链表的中间结点 、 合并两个有序链表 a.题目 b.题解分析(迭代) 🍡 三指针法: 我们可以直接在原链表的

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包