首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AI 赌神——如何教神经网络玩 21 点游戏?(附代码)

作者 | Tony Yiu 编译 | Skura 编辑 | 唐里 原文标题:Teaching A Neural Net To Play Blackjack 不久前,我们开发了代码来模拟 21 点游戏。...如果你不熟悉 21 点游戏,我之前的文章描述了玩这个游戏的规则(https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f...其代码与上一次类似(https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f),因此我不会在这里给出详细的概述...但是,如果有人对使用或扩展我的代码有兴趣,这里有几个对这个项目潜在的有趣扩展: 1、尝试通过更优化的神经网络结构来改进模型,或者添加用于拆分 A 的代码(我没有把它构建到我原来的模拟器中),或者选择比我使用的基本特征更好的特征...2、给模型计算卡片的能力,看看它对一副牌和六副牌的性能有什么影响(这是拉斯维加斯的标准)。 希望你和我一样发现它们的乐趣……干杯!

64630

AI 赌神——如何教神经网络玩 21 点游戏?(附代码)

如果你不熟悉 21 点游戏,我之前的文章描述了玩这个游戏的规则(https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f...其代码与上一次类似(https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f),因此我不会在这里给出详细的概述...(你也可以在我的 github 上找到它:https://github.com/yiuhyuk/blackjack)。...但是,如果有人对使用或扩展我的代码有兴趣,这里有几个对这个项目潜在的有趣扩展: 尝试通过更优化的神经网络结构来改进模型,或者添加用于拆分 A 的代码(我没有把它构建到我原来的模拟器中),或者选择比我使用的基本特征更好的特征...给模型计算卡片的能力,看看它对一副牌和六副牌的性能有什么影响(这是拉斯维加斯的标准)。 希望你和我一样发现它们的乐趣……干杯!

1.7K01
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    概率论之概念解析:引言篇

    一个小例子比如掷骰子或从袋子里抽出一个彩色的球。...例如:假设我们有一副传统扑克牌,一个边缘概率的例子就是从一副牌中抽取的一张牌是红色的概率,即:P(红色)= 0.5。 联合概率(Joint Probability):两个或多个事件相交(交集)的概率。...例如:从一副牌中抽取的卡片是红色并且值为4的概率是P(红色和4)= 2/52 = 1/26。(一副传统扑克牌中有52张牌,红色的是红心和方片,所以是2张)。稍后我们会更详细地讨论这个例子。...设A为卡片为4的事件,B为卡片为红色的事件。如上所述,P(A | B)= 1/13,P(B)= 1/2(半数牌是红色)。因此P(A∩B)= 1/13✕1/2 = 1/26。...所以掷出5或6的概率等于1/6 + 1/6 = 2/6 = 1/3(我们没有减去任何东西)。 ▌结束语 ---- ---- 感谢您看到这里。

    1.1K50

    为一副通用纸牌设计数据结构

    通用可能意味着可以用于类似扑克的游戏的标准牌组,或者甚至可以扩展到Uno或棒球卡。实现特定的扑克牌游戏假设这个牌组是一个标准的52张牌组,就像你在二十一点或扑克游戏中看到的那样。...如果是这样,设计可能看起来像这样:这里的结构很清晰:一副牌包含四种花色和13张牌。每张牌的数字值从1到13。如果您考虑一下扑克牌游戏,不同的游戏有不同的发牌和回收牌的方式。...Suit和Rank分别是枚举类型,用于限定花色和点数的范围。通过这个类,我们可以轻松地创建一副扑克牌。为了实现特定的扑克游戏,可以创建一个继承自Card的类,来表示具有特殊规则的游戏中的牌。...为了实现二十一点游戏,可以创建一个名为Blackjack的类,继承自Card类,用于表示二十一点游戏中的牌。...在二十一点游戏中,每张牌都有一个点数,其中A牌可以表示1或11点,而J、Q、K牌都表示10点。因此,在Blackjack类中,需要添加一个名为getValue()的方法,用于返回该牌的点数。

    18520

    手把手教你训练一个神经网络,打爆21点!

    上次我们开发了代码来模拟玩21点游戏,并发现了在这类赌局中获胜的关键因素。...文章链接: https://towardsdatascience.com/lets-play-blackjack-with-python-913ec66c732f \t _blank 深度学习能做得更好吗...不明白决策如何形成,就无法理解和利用模型训练过程中未包含的测试数据来理智地检查模型的决策。 最后我想就21点这个游戏说几句。我可能接下来一段时间不会再讨论有关赌博的话题了(我想探索的话题太多了)。...可以尝试通过更优化的神经网络结构来改善模型,或者添加用于拆分牌A的代码(我没有将其构建到原始模拟器中),或者选择比我使用的基本特征集更优的特征集。 2....为模型添加计算总点数的能力,并观察总点数在一副牌和六副牌(拉斯维加斯标准)时是怎样影响模型表现的。

    2K20

    使用 Python 和 OpenCV 构建 SET 求解器

    SET 是一种游戏,玩家在指定的时间竞相识别出十二张独特纸牌中的三张纸牌(或 SET)的模式。每张 SET 卡都有四个属性:形状、阴影/填充、颜色和计数。...对于二值图像,腐蚀和膨胀的组合(也称为打开和关闭)用于通过消除落在相关像素 “范围” 之外的任何像素来去除噪声。在下面的例子中可以看到这一点。...另外:识别卡片属性的另一种方法可能是将有监督的 ML 分类模型应用于卡片图像。...方法 2:验证 SET Key 请注意,对于一副牌中的任意两张牌,只有一张牌(并且只有一张牌)可以完成 SET,我们称这第三张卡为SET Key。...在 Python 中检查 Set() 结构的成员资格的平均时间复杂度为 O (1)。 这将算法的时间复杂度降低到 O( n²),因为它减少了需要评估的组合数量。

    1.3K60

    让 YAML 变得像它看起来一样简单

    乍一看,经常用于配置文件、Ansible 剧本和普通文件数据库的 YAML 看起来就像购物清单一样直观。...例如,在 Python 中,同一个列表可以写成 ['Linux', 'BSD', 'Illumos']。当你在现实生活中写一个列表时,例如在你去买菜之前,你写的可能近似于 YAML 序列。...YAML 映射 YAML 映射是一个关键术语与该术语的定义相结合。在其他语言中,映射被称为“键值对”或“词典”。...在 Python 中,例如,同样的数据可以写成 {"Kernel": "Linux", "CPU": "AMD", "RAM": "16 GB"}。...在现实生活中,你可能会使用这种结构来计划,例如,与朋友的游戏之夜。一个朋友报名带零食,另一个报名带一副牌,另一个报名带一个棋盘游戏,等等。 组合序列和映射 你现在知道 YAML 的语法了。

    56820

    【无监督学习】我们如何教人类婴儿学习,也如何教AI

    Ned被告知,如果他能从一套新的卡片中挑出所有西班牙语单词的话,就能得到一大杯冰淇淋的奖励。经过一个小时的学习,现在是测试的时候了。 在第一次测试中,Ned被展示一张西班牙语单词卡片:azul。...因为在之前的学习中,字母“a”只出现在非西班牙语卡片,因此Ned认为azul不是一个西班牙语单词。第二张卡片是葡萄牙语的“母亲”一词:mãe,Ned立刻喊道:“西班牙语!”又错了。...这是由于他的训练卡片中只有一张卡片上的单词有波浪符号,而这个单词恰好是西班牙语的。第三张卡片上写着“volcano”,Ned注意到它以“o”结尾,于是自信满满地说“西班牙语!”...如果Ned在训练时看到一个非西班牙语单词也是以“o”结尾,或者看到更多样化的西班牙语口音标记,那他的表现会更好一些。从统计学角度来看,你获得的各种独特的数据越是多,这些数据的特征就越多样化,范围越大。...因此,如果训练期间使用的数据类型有偏差,并且不能代表在测试时预期的数据,那么就可能出现问题。 在很多人工智能中开始出现偏见的问题。用于训练神经网络的数据集反映了收集这些数据的人或群体的偏见。

    79880

    使用python轻松实现21点小游戏

    目录 前言 关于21点游戏 游戏规则说明 具体游戏实现 运行效果 结束语 前言 经常玩游戏的小伙伴应该对棋牌类的游戏很熟悉,尤其是在众多策略性纸牌游戏中,我觉得21点(Blackjack)被公认为是最受欢迎和最具挑战性的一种纸牌游戏...Python 提供了丰富的数据结构和算法功能,使得处理纸牌和游戏逻辑变得相对简单,而且Python 的易学性和可读性使得代码编写和调试的时候变得更加容易。...在接下来的文章中,将详细讨论如何使用 Python 创建21点小游戏,以及探索纸牌的表示、游戏规则的实现以及交互式界面的设计,通过这个项目读者将能够提升自己的编程技能,并且能够享受到21点游戏的刺激与乐趣...结束语 通过本文的学习和实践,大家都可以成功地使用 Python 编程语言实现了21点小游戏,这个示例项目不仅提供了一个有趣的游戏体验,还提供了锻炼编程技巧和策略思维的机会。...模拟纸牌游戏的规则和玩法,我们学会了如何处理数据结构、实现游戏逻辑,并设计交互式的游戏界面,这个过程中,我们充分利用了 Python 的灵活性和强大的库,使得代码编写变得简单而又高效。

    64332

    以太坊DApp开发初探

    从游戏性来说,其本质就是一个简单的收集交换类游戏,然鹅,是区块链赋予了它魅力,让用户每一只猫永远不会消失、不被篡改,更重要的是可以炒(滑稽脸),于是今天借此机会一探以太坊应用DApp的开发过程以及开发中遇到的坑...以太坊DApp介绍 以太坊是一个区块链公有链平台,和比特币类似,以太坊也有其代币--以太币,可在挖矿、交易中获得,然而,说到以太坊和比特币的区别就是其支持智能合约,一个智能合约由代码和数据组成,和其他编程语言中的类类似...Demo功能介绍 该demo是一个卡片收集类游戏,业务场景为每个用户都拥有一只随机的宠物,用户通过收集卡片作用于宠物身上进行装扮,而卡片的收集来源分三种: 系统定期为随机用户生成卡片 与其他用户交换卡片...test 合约的测试文件,我们可以在该目录中存放各个合约的测试代码,类似于其他编程语言中的单元测试,该文章不展开讨论。...event,每个event只需要定义其名字和参数列表即可以,其作用相当于其他语言中的log,在函数中传入实参即可记录,虽说event的作用和log一样,但在Solidity中作用却非同小可,因为当一个函数是以

    2.7K160

    麻将游戏数据结构和AI算法

    基础数据结构     数据结构确定决定了程序的开发难易程度,就像是游戏的骨架,对于电脑AI难度设定和玩家的游戏体验起着决定性的作用。...(庄家ID)、SharePAI(最后的出牌ID,对应PAICAPTION数组的下标)、FaPaiFlag(发牌标志),iBool (要牌标志)其中AI开头的变量用于电脑AI,算法实现如下:...f、去除连续牌数位2、5、8、11中的一张牌,让牌型成为有将听牌型。如23445条,去除5条。     g、从将牌中打出一张牌。     ...5.套算一次原则         如有尚未组合过的一副牌,只可同已组合过的相应一副牌套算一次。     一定要注意最后的套算一次原则,否则算出的番数会过多。     ...结束语:游戏雏形出来后让哥们试玩了一下,还不错,4人联网时没什么问题,就是有电脑参加时AI还是偏高,看来还得写个“AI降低模块”来让电脑随机的“傻一次”,呵呵。

    3.7K30

    random — 伪随机数生成器(史上总结最全)

    random 模块包含了 choice() 函数用于从序列中随机获取值。这个例子模拟了投 10000 次硬币正面和反面出现的次数。...$ python3 random_choice.py Heads: 5091 Tails: 4909 排列 对棋牌游戏的模拟需要混合一副牌,然后把它们发给玩家,并且不能多次使用同一张牌。...通过每次向四个列表中添加一张卡片,并且将其从牌桌上移除以使其无法再次使用而创建默认的 「hands」。...正态分布 正态分布 通常用于非均匀分布的连续纸,例如,成绩,高度,宽度等。该分部生成的曲线具有独特的形状,导致他被叫做 「钟形曲线」。...指数分布 expovariate() 生成一个指数分布,用于模拟均匀 Poisson 过程中的到达和间隔时间值,例如放射性衰减或者进入服务器的请求数。

    5.9K30

    如何构建用户画像?

    由此可以确定深度访谈的提纲。 (以下内容为深度访谈的结构和要点,具体访谈话术不进一步展开) 深度访谈包括:开场介绍、正式访谈(游戏测试问题、游戏经历问题、其他游戏相关问题、游戏外问题)、结束语。...2)游戏经历问题+其他游戏相关问题 这部分构建了用户A的游戏关联画像,同时也为游戏后续(包括直播、推广、付费等)提供思路。 3)游戏外问题+结束语 与游戏相关问题结合,组成了用户A完整的画像。...根据卡片的关键词信息,将有共性的卡片贴在一块并说明理由。...方法介绍: K均值和凝聚层级是常用的聚类方法。 K均值聚类更快捷,且适用于样本量极大的情况,但需要预设类别数量。因此我们选用层级聚类法,在过程中确定类别数。...层级聚类方法: Python/R/SPSS等软件都能实现层级聚类,我们简单介绍如何使用python聚类。 导入函数及确定数据—— 数据完整性很好,无需清洗。

    3.7K30

    声临其境 | QQ音视频娱乐社交设计

    因此,解决社交游戏产品缺少真实情境的问题,成为QQ一起派对的创新机会点,有利于在竞品中突围,塑造差异化优势。...| 游戏氛围 构建适用于游戏类型的界面框架,让线上聚会更贴近真实世界,并运用视觉感染力,营造环境氛围,包括场景具象化、增强代入感等方法,实时感知好友的情感变化,从而获得社交临场感,在心理上感到彼此的存在...| 自然交互 有别于竞品需通过点击按钮作答,QQ一起派对利用实时语音识别,让用户通过更自然的人机交互方式,在游戏过程中进行语音抢答,彷佛置身于真实世界中与好友互动,成为QQ一起派对的独特卖点(Unique...此外,进一步优化房间内的界面布局,将游戏卡片缩小平铺排列,让用户一眼就能看到多款游戏,提升对游戏数量的感知与转化率。...我们将游戏卡片、题库卡片、提示卡片和入口卡片等功能界面,构建一套组件系统,让框架布局贯通全流程,打造体验一致的可玩性,利于后续的扩充与延展。 ? ?

    86510

    玩个游戏来理解交叉熵

    游戏一: 我将从一袋硬币(里面有一枚蓝色硬币,一枚红色硬币,一枚绿色硬币和一枚橙色硬币)中取出一枚硬币。你的目标是用最少的问题来猜它是什么颜色。 ? 最好的策略之一是: ?...游戏二: 现在,我将从一袋硬币(其中1/2是蓝色的,1/4是红色的,1/8是绿色的,1/8是橙色的)中抽出一枚硬币 。...因此,在游戏二中使用游戏一的策略更糟糕,其中2是使用游戏一策略的交叉熵。 因此,对于一个给定的策略,交叉熵就是在该策略下猜测颜色的问题数量的期望。对于给定的设置,策略越好,交叉熵越低。...所以,在一个决策树中,如果你的树没有以最好的方式构造,你基本上就是错误地假设了结果的概率分布,而且交叉熵很高。 交叉熵不仅仅用于决策树,它也适用于所有的分类问题。...使用硬币游戏类比,在这里,每个样本 y 的预测是一个单独的猜硬币游戏,设置和游戏三相同。第一个样本 y=1 就像从一个只有“ y=1”的袋子里抽出一枚硬币。

    54320

    都说python是最佳编程入门语言,为什么你学习却是如此坎坷?

    ; 有市场的职业技能,尽管在学术和业余编程中已经非常出色,但教授学生的技能在职业环境中也应该能派上用场; 社区支持和轻松的语言环境,这里再一次强调,对于那些从未接触过编码的年轻人来说是至关重要的。...而python在所有编程语言中,是最能够满足这五点的。 你学的是假python?...但是在你的python学习过程中,是否有过以下经历,或正在面临类似的局面,让你开始怀疑人生呢: 网上找了很多资料,不知道从哪里看起 买了本书,过了很久也没有看完第一章 开始还能跟着写几行代码,后来突然就看不懂了...否则,盲目地从一个不恰当的地方开始,比如选了一本起点较高的书,或是上手就去折腾某个框架,就会事倍功半,效率很低,甚至导致放弃。所谓“欲速则不达”,就是这个道理。...如果你做了上一点,有些基本的整体认知,自然就会明白那些“21天精通XX”、“两个月成为数据分析师”的宣传语有多荒唐。

    53430

    如何构建用户画像?

    (以下内容为深度访谈的结构和要点,具体访谈话术不进一步展开) 深度访谈包括:开场介绍、正式访谈(游戏测试问题、游戏经历问题、其他游戏相关问题、游戏外问题)、结束语。...image.png 3)游戏外问题+结束语 与游戏相关问题结合,组成了用户A完整的画像。...)参与卡片分类,根据卡片的关键词信息,将有共性的卡片贴在一块并说明理由。...方法介绍: K均值和凝聚层级是常用的聚类方法。 K均值聚类更快捷,且适用于样本量极大的情况,但需要预设类别数量。因此我们选用层级聚类法,在过程中确定类别数。...image.png 层级聚类方法: image.png Python/R/SPSS等软件都能实现层级聚类,我们简单介绍如何使用python聚类。

    2.1K00
    领券