在牌手中查找匹配项的结果在大约 10% 的情况下略有偏差

2024-04-29

这是我的代码,它应该比较数组“arrHands”中的值,该数组将 x 张牌(x = cardsDrawn)存储为单打,其中整数部分是花色(1 到 4),小数部分代表牌号(.01 = 1 = A 等)。 然而,大约十分之一的运行次数会返回相差一两对的值。我知道当手牌包含三张同类牌时会发生这种情况,因为我还没有为此编写代码,但这仍然没有意义。如果返回的值是错误的,它总是高于我的预期。 这是代码:

  Dim numPairs As Integer = 0 
    Dim A As Integer = 1 
    Dim B As Integer = 1 

  'A and B represent the position in the array of the cards being compared

    For A = 1 To cardsDrawn 

        For B = 1 To cardsDrawn 
            If (A <> B) And (A < B) And (arrHand(A) <> 0) And (arrHand(B) <> 0) Then 
                 'The above line stops cards from being compared to each other, or to a card they have already been compared to.

                If (arrHand(A) - (Int(arrHand(A))) = (arrHand(B) - (Int(arrHand(B))))) Then 

    'the code above extracts the card number from the single that each card is stored as

                    numPairs += 1 
                    arrHand(A) = 0 
                    arrHand(B) = 0 
                End If 

            End If 
        Next 
    Next

感谢您提供的任何帮助或想法。


将 2 条信息粘合到一个变量中几乎总是一个坏主意。类可以轻松跟踪卡片的各种数据:

Public Class Card
    Private Shared Faces() As String = {"Jack", "Queen", "King", "Ace"}
    Private Shared Names() As String = {"Ace", "Deuce", ..."King"}

    Public Property Value As Int32
    Public Property Rank As Int32
    Public Property Suit As String
    Public Property Img As Image
    Public Property Name As String

    Public Overrides Function ToString() As String
        Return String.Format("{0} of {1}", Names(Rank - 1), Suit)
    End Function
End Class

有一个Value and a Rank因为一张牌总是具有相同的等级,但根据游戏的不同,其价值可能会发生变化(例如尤克牌和百家乐)。 Deck 类可以使用Stack(Of Card)一只手可以是List(Of Card)或数组,具体取决于游戏。

给定 5 张牌的数组,使用 linq 对扑克牌进行排名很简单(假设是扑克):

Dim pairs = cards.
    GroupBy(Function(v) v.Value,
            Function(key, values) New With {
                    Key .Rank = key,
                    Key .Count = values.Count()
                    }).
            OrderByDescending(Function(o) o.Count).
            ThenByDescending(Function(r) r.Rank).
            ToArray()

If pairs.Count是 4,有四种;同样 2pair 当Count=2当计数为一时为一对。如果pairs(0).Count = 3然后你就有旅行了。

If pairs.Count = 2 AndAlso pairs(0).Count = 3,那么你就有了一个 FullHouse。非常简单的是,对花色进行分组以确定同花,然后将它们放在一起以查看它是否是顺子。

请务必从高到低测试手牌:当确实是葫芦时,您不想返回 2 对。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在牌手中查找匹配项的结果在大约 10% 的情况下略有偏差 的相关文章

随机推荐

  • 将 Android 应用程序部署到手机:错误:[install_itemfolder_01] 错误 1 ​​Windows

    我已经安装了我可能需要的所有组件 我已经上网两天了 但找不到这个问题的答案 我检查了我的 apache ant javac java JRE JDK Qt 变量一切正常 Qt 喜欢我的所有设置 除了当我尝试将应用程序部署到模拟器或设备时出现
  • 在 bash 中传递多个数组作为参数

    我已经成功地能够调用单个数组作为参数 但在传递多个数组时遇到问题 这是我到目前为止所拥有的 calling function array1 1 2 3 4 array2 a b c d array3 called function arra
  • 通过 Hyperledger Composer 中的交易创建资产

    在创建任何asset or 参与者需要检查一些条件就像 如果 那么 否则 在某些领域 是否可以创建Asset or 参加者通过交易 对的 这是可能的 我在我的网络中做了同样的事情 通过交易创建资产并应用您需要的任何规则 事务从 lib 中的
  • Google 组织结构图数据溢出到 div 之外

    我在一个项目中使用 Google Org 图表 图表的内容在包含的 div 之外流动 该 div 在下面以红色突出显示 我希望图表的节点能够移动到下一行 以防它流到 div 之外 爱丽丝将移动到下一行 数据将继续 See my 在这里摆弄
  • 小写表名错误

    我正在尝试设置lower case table name价值2 因为它是 Windows 服务器 但是当我启动 MySQL Workbench 并连接到我的服务器时 出现以下错误 服务器所在的系统不能正确支持所选的lower case ta
  • 具有默认值的 Asp.net webapi 枚举参数

    我有一个控制器 HttpGet RoutePrefix api products productId public HttpResponseMessage Products int productId TypeEnum ptype Type
  • 离开页面时 JQuery Ajax 错误

    我使用以下代码将数据从服务器异步提取到客户端 错误块中的警报报告服务器上发生的错误 但是 如果用户在调用过程中离开页面 该块也会被触发并抛出一个空的警报容器 有什么方法可以更优雅地处理用户离开页面的情况 即在离开之前不抛出空警报 也许可以通
  • 当加载图标且 tk.mainloop 位于线程中时,Tkinter 会锁定 Python

    这是测试用例 import Tkinter as tk import thread from time import sleep if name main t tk Tk thread start new thread t mainloop
  • 如何更改 Rx Builder 实现来修复堆栈溢出异常?

    我正在尝试提出一个 Rx Builder 以在 F 计算表达式语法中使用反应式扩展 我该如何修复它 以免堆栈崩溃 就像下面的 Seq 例子一样 是否有计划提供 RxBuilder 的实现作为响应式扩展的一部分或作为 NET Framewor
  • <%= foo %> 和 ${ foo } 之间的区别

    第一次在 JSP 中编码 我需要将变量的值呈现为 HTML 看起来有多种方法可以做到这一点 它们之间有什么区别 假设我有一个名为foo and foo 这 使用老式的输出小脚本这是十年来一直灰心丧气 https stackoverflow
  • 如何从字符串读取 NumPy 二维数组?

    如何从字符串中读取 Numpy 数组 取一个像这样的字符串 0 5544 0 4456 0 8811 0 1189 并将其转换为数组 a from string 0 5544 0 4456 0 8811 0 1189 where a成为对象
  • 我可以为 XPath 中缺失的标签创建一个值吗?

    我有一个使用 XPath 从 XML 文件中提取数据的应用程序 如果该 XML 源文件中的节点丢失 我想返回值 N A 很像 Oracle NVL 函数 问题在于该应用程序不支持 XSLT 我想使用 XPath 和单独使用 XPath 来完
  • Spring MVC 配置启用

    我正在从头开始建立一个项目 目前我正在配置Spring MVC 4 1 5使用java配置 整个应用程序正在 tomcat gradle 插件上运行 有人可以解释一下为什么我需要对班级进行以下调用DefaultServletHandlerC
  • 作为依赖项和不同的 publicKeyToken 共享时 RestSharp 错误

    使用来自的 APIDocusign Twilio and Auth0 全部 3 个都有RestSharp dll作为依赖 如果我使用RestSharp dll包含在Docusign包裹 Docusign效果很好但是Auth0 and Twi
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • 如何在 gitlab-ci 作业之间传递变量?

    我有一个像这样的 gitlab ci stages calculation execution calculation job stage calculation script calculate something and output
  • 如何使用 mongoTemplate 实现 Mongodb Collection 的分页

    我是 mongoDb 中的菜鸟 我需要为任何特定集合实现分页 例如说 我有一个 Foo 集合 并且有一个返回 Foo 集合中所有记录的函数 public List
  • Button.setImage(nil, for: .normal) 在 iOS 15 中不起作用

    我试图在 Swift 中制作一个简单的井字棋应用程序 所以我设置了 9 个带有从 1 到 9 标签的按钮并调用setImage设置圆圈和十字 这正在按预期工作 当尝试重置主板时出现问题 我将这段代码称为 for i in 1 lt 10 i
  • 如何安全地存储 Discord(OAuth2) 用户的访问令牌?

    我正在努力寻找一种安全保存访问令牌的方法 我的 Web 应用程序在用户授权应用程序后从 DiscordAPI 检索到该访问令牌 我正在为 Discord 机器人创建一个网络界面 重要的是 不是每个人都可以使用它 仅应允许特定 Discord
  • 在牌手中查找匹配项的结果在大约 10% 的情况下略有偏差

    这是我的代码 它应该比较数组 arrHands 中的值 该数组将 x 张牌 x cardsDrawn 存储为单打 其中整数部分是花色 1 到 4 小数部分代表牌号 01 1 A 等 然而 大约十分之一的运行次数会返回相差一两对的值 我知道当