当前位置: 首页 > news >正文

Python-120:摇骰子的胜利概率

问题描述

小U和小S正在玩一个有趣的骰子游戏。每个骰子都有固定数量的面数k,每一面的点数分别是1到k。小U拥有n个骰子,每个骰子i的面数是 a_i,摇到每一面的概率均为 1/a_i。小S则有m个骰子,每个骰子j的面数是 b_j,摇到每一面的概率均为 1/b_j

两人分别同时摇各自的骰子,并将摇出的点数相加,得分较高的一方获胜,得分相同则为平局。游戏只进行一次,没有重赛。现在小U想知道他获胜的概率是多少。你能帮他计算吗?(答案保留三位小数)

输入:

  • n:小U的骰子数量
  • m:小S的骰子数量
  • arrayN:小U的每个骰子面数
  • arrayM:小S的每个骰子面数

约束条件:

  • nmk为整数,数据范围 1 ≤ nmk ≤ 25

代码

def solution(n, m, arrayN, arrayM):

    # Edit your code here

    assert n == len(arrayN)

    assert m == len(arrayM)

    def gen_table(a):

        s = sum(a)

        f = [0 for _ in range(s + 1)]

        f[0] = 1

        for x in a:

            g = [0 for _ in range(s + 1)]

            for i, v in enumerate(f):

                for j in range(1, x + 1):

                    if i + j <= s:

                        g[i + j] += v / x

            f = g

        return f

    p1 = gen_table(arrayN)

    p2 = gen_table(arrayM)

    ans = 0

    for i in range(len(p1)):

        for j in range(len(p2)):

            if j < i:

                ans += p1[i] * p2[j]

    return round(ans, 3)


 

if __name__ == "__main__":

    # Add your test cases here

    print(solution(1, 3, [8], [2, 3, 4]) == 0.255)

    print(solution(2, 2, [3, 4], [3, 3]) == 0.5)

    print(solution(3, 1, [2, 2, 2], [4]) == 0.844)


 

http://www.dtcms.com/a/227098.html

相关文章:

  • 23. Merge k Sorted Lists
  • 鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(一)
  • DAY41 CNN
  • DAY 41 简单CNN
  • Python----目标检测(训练YOLOV8网络)
  • SpringBoot手动实现流式输出方案整理以及SSE规范输出详解
  • JavaSE知识总结(集合篇) ~个人笔记以及不断思考~持续更新
  • 学习经验分享【40】目标检测热力图制作
  • [HTML5]快速掌握canvas
  • (Python网络爬虫);抓取B站404页面小漫画
  • 智慧零工平台前端开发实战:从uni-app到跨平台应用
  • uniapp路由跳转toolbar页面
  • 通俗易懂解析:@ComponentScan 与 @MapperScan 的异同与用法
  • Java连接Redis和基础操作命令
  • 微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载
  • GODOT引擎学习日志
  • Gartner《Emerging Patterns for Building LLM-Based AIAgents》学习心得
  • 线程间和进程间是如何进行通信
  • 复变函数 $w = z^2$ 的映射图像演示
  • 端到端的导航技术NeuPAN论文讲解
  • 《AI Agent项目开发实战》DeepSeek R1模型蒸馏入门实战
  • 达梦数据库 Windows 系统安装教程
  • HTML 中 class 属性介绍、用法
  • 【学习笔记】On the Biology of a Large Language Model
  • ffmpeg 的视频格式转换 c# win10
  • 使用免费wordpress成品网站模板需要注意点什么
  • 【SpringBoot】| 接口架构风格—RESTful
  • opencv调用模型
  • 交换机、路由器配置
  • Oracle expdp过滤部分表数据