数学建模揭示:旋转陀螺游戏Dreidel有多糟糕
博主去年使用PRISM概率建模语言对传统节日游戏Dreidel进行了建模,证明其缺乏乐趣。今年,他完善了模型,使其能够模拟直至游戏结束的全过程。新的模型修正了之前仅模拟首位玩家出局的缺陷,并改进了计算押注和玩家出局逻辑。通过模型模拟,博主发现,平均而言,一场四名玩家的游戏需要760次旋转才能结束,最长甚至可能超过6小时。这充分证明了Dreidel游戏冗长乏味,令人沮丧。
阅读更多
博主去年使用PRISM概率建模语言对传统节日游戏Dreidel进行了建模,证明其缺乏乐趣。今年,他完善了模型,使其能够模拟直至游戏结束的全过程。新的模型修正了之前仅模拟首位玩家出局的缺陷,并改进了计算押注和玩家出局逻辑。通过模型模拟,博主发现,平均而言,一场四名玩家的游戏需要760次旋转才能结束,最长甚至可能超过6小时。这充分证明了Dreidel游戏冗长乏味,令人沮丧。
阅读更多
本文探讨了DuckDB允许用户通过扩展在运行时修改SQL语法这一特性。作者认为,对于一次性分析查询而言,这种语法扩展能力非常有吸引力。文章进一步探讨了通过解析表达式语法(PEG)实现这一特性的可能性,并提出了一个更深层次的想法:将语言按功能分解,每个功能都包含其语法和语义解析。作者还实现了一个简单的原型,演示了如何动态添加数组字面量到语言中,并讨论了这种方法的优缺点以及未来研究方向。
阅读更多
本文探讨了LSM树及其核心组件memtable的实现方式。作者认为无锁并发跳表是memtable的最佳选择,尽管其较为复杂。文章详细解释了memtable的需求:快速读写、并发读写支持、有序扫描以及内存限制。作者研究了跳表的并发写操作,比较了单写多读和多写多读的实现,并通过模拟实验探究了概率p和最大高度对跳表性能的影响。
阅读更多
作者分享了在使用OneNote的“墨迹转形状”功能时遇到的困惑。由于缺乏文档说明,作者只能通过反复尝试来理解该功能的运作方式,并对某些操作产生了类似“迷信”的想法,就像斯金纳的鸽子实验一样。作者呼吁软件开发者提供更完善的文档,避免用户因缺乏指导而产生不必要的猜测和误解。
阅读更多
本文介绍了Raku编程语言的五个独特之处:Junctions(用于布尔逻辑的复合值)、Whatevers(多功能占位符,可用于创建匿名函数)、正则表达式(改进的可组合性和语法)、Hyperoperators(用于并行列表操作的特殊运算符)以及Pair语法(用于简洁定义键值对的语法糖)。文章还简要提及了Slangs(语法扩展)和RakuAST(抽象语法树处理),并推荐了一些Raku相关的博客和资源。
阅读更多
本文介绍了TLA+的基础数学原理,以及如何用其进行系统建模。文章以银行账户转账为例,逐步讲解如何使用谓词逻辑、时间变量、状态转换等概念描述系统行为。并引入了时间逻辑、Stutter步骤、不变式等关键概念,最终用TLA+语言表达了转账模型和无透支属性。文章还讨论了如何简化模型以提高可验证性,并鼓励读者思考如何扩展模型以支持双向转账。
阅读更多