想做一个模拟立直麻将的程序,但是仔细思考了一下,由于麻将和牌牌型太多了,光是判断和牌牌型和计算役种番数的算法就相当困难,如果直接动态计算手牌和牌牌型的话,每次都根据不同情况要跑一遍算法,耗时太大,如果使用二分查表的算法的话也没有表可以查,因此我想,可不可以简化一下麻将,并使其不失麻将二则,根据牌山牌河出牌的乐趣和随机性造成的多样情况呢?
中,发,白三元牌是我首先想到的,毕竟和出大三元是令人快乐的,因此,我把全部的麻将牌都换成中发白,并把牌总数控制为3214,84张,也就是每种牌28张。
接下来考虑役种,可和牌型为2,4,8;7,7,0;14,0 ,0三种,考虑各种情况,共6+3+3,十二种情形,这样让查表变得非常容易,而且雀士手中13张牌,在开局根据古典概型比较容易遇到三种牌相差不多情形,需要根据牌山所剩牌,自己的牌河,甚至对手的牌河来考虑切牌 并且在做2,4,8时会遇到一个简单的3,3 ,8的二则情形,这样就基本实现了麻将的简单规则,虽然十分简陋。
最后是电脑的ai,电脑需要通过和牌概率(即牌效),和牌番数大小来综合考虑出牌,即使经过简化,也是需要一个复杂且高效的算法来完成的。
好的,先想到这里,想要做出这个还需要一点知识和技术,在这里先挖一个坑。

关于如何实现一个至简的麻将模拟程序的思考相关推荐

  1. 用VuePress来搭建一个极简的静态网站

    VuePress学习 全局安装前我们需要Git和node这两个软件,关于怎么安装可以我之前hexo的视频教程 假如这两个都没有安装好,那么下面就不需要看了哈,栈友们 全局安装 首先我们先全局安装一下 ...

  2. 伙伴分配器的一个极简实现

    提起buddy system相信很多人不会陌生,它是一种经典的内存分配算法,大名鼎鼎的Linux底层的内存管理用的就是它.这里不探讨内核这么复杂实现,而仅仅是将该算法抽象提取出来,同时给出一份及其简洁 ...

  3. c语言log_Morn:一个极简的C语言日志

    Morn:一个C语言的基础工具和基础算法库​github.com Morn的日志是一个极简的,几乎没有学习成本的日志.它可以实现: 多种输出,包括动态文件.控制台.和用户自定义输出. 日志分级,选择性 ...

  4. 一个极简版本的 VUE SSR demo

    我本人在刚开始看 VUE SSR 官方文档的时候遇到很多问题,它一开始是建立在你有一个可运行的构建环境的,所以它直接讲代码的实现,但是对于刚接触的开发者来说并没有一个运行环境,所以所有的代码片段都无法 ...

  5. 极简linux版本,4MLinux 26.0发布,这是一个极简版本

    4MLinux 26.0版已经发布,这是一个极简版本,包括桌面版(带有JWM)和服务器版(具有完整的LAMP环境). 该项目的最新稳定版本附带升级包以及对现代图像和视频编码的支持: 4MLinux 2 ...

  6. VB.NET编写一个“个人简历表”程序

    实验3.11 编写一个"个人简历表"程序,用户在文本框提交后输入姓名和年龄,选择性别,职业,学历和个人兴趣爱好信息,单机提交按钮后右边显示个人简历信息,单击"重置&quo ...

  7. 开源一个极简的群日程工具

    这是一个极简日程小助手,目前以小程序的形式发布.用户喂给它一段文字,它会帮你解析文字里的时间信息,并且创建一个含有通知的日程,用以备忘一些活动或者会议事项. 当然如果你在没有人的环境,你可以直接:

  8. 一个极简、高效的秒杀系统-战略设计篇

    文章目录 一.前言 二.业务需求 2.1 产品需求 2.2 业务流程 2.2.1 秒杀活动整体业务流程 2.2.2 创建秒杀活动 2.2.3 查看秒杀活动 2.2.4 参与秒杀活动 2.2.5 小节 ...

  9. 一个极简操作系统的代码实现

    一个极简操作系统的代码实现 在网上看的demo OS实现时,发现一个名为Hurlex的demo OS project,实现精简,麻雀虽小五脏俱全,挺适合对OS实现进行代码级别的快速粗略了解一下的. 当 ...

  10. CherryPy: 一个极简主义Python Web框架

    目录 1 前言 2 SWGI(Web Server Gateway Interface) 3 特色与优势 4 Hello, World! 5 不同URL调用不同函数 6 带有参数的URL 7 处理表单 ...

最新文章

  1. Ardino基础教程 22_PS2摇杆
  2. HDU - 6393 Traffic Network in Numazu(线段树+LCA+树链剖分+并查集)
  3. Java处理文件BOM头的方式推荐
  4. 离屏渲染在车载导航中的应用
  5. MongoDB学习笔记二—Shell操作
  6. 数组删除一行_一行Python代码能做出哪些神器的事情
  7. oracle 定时任务例子【项目例子】
  8. 【分论坛第一期大剧透】开源技术与新IT基础设施联袂共舞
  9. 高德公交路径等时线分析
  10. VC与matlab混合编程
  11. BAT批处理提取文件内容替换指定文件内容
  12. 云知声开源全栈语音交互方案
  13. linux所有目录和子目录和文件777,关于linux:Chmod 777到一个文件夹和所有内容
  14. 软件工作量评估方法(一)
  15. 几种经典的下肢力量练习方式
  16. easyUI快速入门第五讲——easyUI中的datagrid(数据表格)组件
  17. Java不要在循环中访问数据库,这样会严重影响数据库性能
  18. 基于socket的联机五子棋
  19. xcode安装ipa包
  20. 研发质量保障体系搭建

热门文章

  1. java中cleanup的使用_【Lombok注解】@Cleanup 自动资源管理:安全无困扰地调用close方法...
  2. 网络运维系列:网络出口IP地址查询
  3. c语言自学报告格式,C语言程序设计实验报告优秀范文
  4. Cesium中的几种坐标和相互转换
  5. python输入个人所得税计算_分享一下python的个税计算代码
  6. 编写程序输入年利率k(例如2.52%),存款总额total(例如100000元),计算一年后的本息并输出。
  7. 装了linux的u盘格式化,u盘格式化容量变小了u盘安装linuxcentos
  8. python实用30个小技巧
  9. 人脸识别错误代码437是什么意思_英雄联盟手游unabletologin什么意思?显示unabletologin解决方法[多图]-攻略...
  10. 携程校招——携程海洋馆的海豚小宝宝(C++)