翻牌游戏概率模拟

news/2024/11/8 0:42:30/

        假如有9张扣着的牌,其中7张普通牌各自翻出猫的概率相同,比如5%能翻出来( 95%翻出来不是猫),一 张简单牌,翻出来猫的概率是20%,一张困难牌,翻出来猫的概率是1%。我现在有三轮翻牌机会,每轮都可以把所有牌翻开,全都翻开后为一轮结束,每轮结束后除了翻出来猫的牌其余全都扣回去,猫牌就留在原地不动,之后猫牌不再参与翻牌,然后进行下一轮翻牌。要是翻出来猫的话,不管几个,翻牌机会可以重置为3轮。当翻牌机会用完或者所有牌都翻出来猫游戏结束。


        举个例子,比如9张牌编号1-9,1-7为普通,8为简单,9为困难, 我第一轮翻完时,8翻出了猫,这时我剩下的机会不是2轮而是重置为了3轮,下轮我只需要翻17和9, 8已经是猫就不用再翻了。然后接下来三轮每轮我都没翻出来猫,机会耗尽,所以这次游戏结束结果统计为1。

import random as radef generate(normal, simple, hard):is_cat_normal = [0]is_cat_simple = [0]is_cat_hart = [0]for i in range(normal):is_cat = ra.random() * 100if is_cat < 5:is_cat_normal.append(1)else:is_cat_normal.append(0)for i in range(simple):is_cat = ra.random() * 100if is_cat < 20:is_cat_simple.append(1)else:is_cat_simple.append(0)for i in range(hard):is_cat = ra.random() * 100if is_cat < 1:is_cat_hart.append(1)else:is_cat_hart.append(0)return is_cat_normal, is_cat_simple, is_cat_hartdef game():sum_ = 0count = 3normal, simple, hard = 7, 1, 1while count > 0 & sum_ < 9:count -= 1cat1, cat2, cat3 = generate(normal, simple, hard)has_cat1 = sum(cat1)has_cat2 = sum(cat2)has_cat3 = sum(cat3)sum_ += has_cat1 + has_cat2 + has_cat3if has_cat1 != 0 or has_cat2 != 0 or has_cat3 != 0:count = 3normal -= has_cat1simple -= has_cat2hard -= has_cat3return sum_if __name__ == '__main__':time = 10000 * 50result = dict()for i in range(10):result[i] = 0for i in range(time):res = game()result[res] += 1print(result)for i in range(10):result[i] = "{0:.10f}".format(result[i] / time)print(result)

     模拟 50万次结果

{0: 84903, 1: 80804, 2: 90632, 3: 85654, 4: 68857, 5: 47392, 6: 26958, 7: 11358, 8: 3073, 9: 369}

 

{0: '0.1698060000', 1: '0.1616080000', 2: '0.1812640000', 3: '0.1713080000', 4: '0.1377140000', 5: '0.0947840000', 6: '0.0539160000', 7: '0.0227160000', 8: '0.0061460000', 9: '0.0007380000'}


http://www.ppmy.cn/news/218900.html

相关文章

Js 简单实现翻牌小游戏

1.简介 非常简单的一个网络消消乐翻牌小游戏的实现&#xff0c;代码量较少&#xff0c;不过遇到的bug和自行开发的步骤十分有纪念意义。 2.核心代码块 生成随机数列&#xff0c;确定图片随机分布 function getImgIndex(is){var index parseInt(Math.random()*8)1;if(is[in…

翻牌动画

效果如下(可兼容移动端)&#xff1a; css部分&#xff1a; <style type"text/css"> *, *:before, *:after { box-sizing: border-box; } html { font-size: 18px; line-height: 1.5; font-weight: 300; color: #333; font-family: "Nunito …

js 翻牌小游戏

js 翻牌小游戏 效果图 链接 PC端翻牌小游戏 需求分析 生成两组顺序随机的1-8数据卡片需要有翻转效果两次翻转数据不相等&#xff0c;回复原状两次翻转数据相等&#xff0c;卡片相等&#xff0c;不能再被点击当所有卡片不能被点击游戏结束限制最大点击次数50次 HTML结构 &…

JAVA记忆翻牌游戏制作

游戏功能需求说明代码编写 1 框架搭建2 主要技术难点 21 图片面板对应的图片索引获取22 图片面板 3 完整代码 游戏截图 1启动后界面2开始游戏界面3游戏结束界面 1 游戏功能需求说明 该游戏主要模拟常见的翻牌游戏&#xff0c;即找到所有两两相同的牌认为游戏成功&#xff0c;主…

js实现翻牌游戏

在我的项目中需要在里面添加一个翻牌游戏&#xff0c;就研究了一下&#xff0c;在这里只实现了基本的效果。不多说&#xff0c;和大家分享一下。 说到翻牌游戏&#xff0c;大致分为以下几个步骤&#xff1a; 绘制正反面卡牌-------------->洗牌----------------------->…

Qt 在 VS2017 上的安装配置

Qt5.0 以上的版本可以较好地满足一些软件项目开发的要求&#xff0c;并且移植性强。Qt 中包含 很多库函数用来支持 UI 界面的设计开发。所以可选择 Qt 与 VS2017 相结合的 开发方式。由于 Qt 是安装在 VS2017 上的插件&#xff0c;所以需要下载相关的 vsaddin-msvc2017 插件。 …

Qt的安装及配置

一、Qt的安装 1.下载链接 或者 网盘下载 链接: https://pan.baidu.com/s/15Fwh8kOtrj4GIIg6ptnb7A 提取码: uvar 2.先注册账号&#xff0c;用自己的qq邮箱就可(注意&#xff1a;密码要有数字和大小写字母) 3.看图 4. 第一个&#xff1a;通过在Q中启用发送假名使用统计数据来…

QT5.14.2+VS2022配置MSVC2017

VS2022安装注意事项 1.在单个组件里选中需要的编译器&#xff0c; 安装Qt 配置Qt kits 跳转链接吧&#xff0c;详细教程