Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算胜算-扑克机器人_Java_Memory Management_Poker - Fatal编程技术网

Java 计算胜算-扑克机器人

Java 计算胜算-扑克机器人,java,memory-management,poker,Java,Memory Management,Poker,我正在尝试用java构建一个扑克机器人。我已经写了手工评估课,我即将开始输入一个神经网络,但我面临一个问题。我需要每一步每一手的获胜几率:预跳、失败、转身、河流 我的问题是,有52张卡,5张卡的组合是2598960。所以我需要为每一手牌存储2598960赔率。这个数字是巨大的,这些只是我在这条河上需要的几率 所以我有两个选择: 找到每一手牌和每一副牌的几率,每次我启动应用程序时,都会加载它们并杀死我的内存 计算动态和缺乏处理能力的几率 有没有第三种更好的方法来处理这个问题?第三种方法是使用磁盘。

我正在尝试用java构建一个扑克机器人。我已经写了手工评估课,我即将开始输入一个神经网络,但我面临一个问题。我需要每一步每一手的获胜几率:预跳、失败、转身、河流

我的问题是,有52张卡,5张卡的组合是2598960。所以我需要为每一手牌存储2598960赔率。这个数字是巨大的,这些只是我在这条河上需要的几率

所以我有两个选择:

  • 找到每一手牌和每一副牌的几率,每次我启动应用程序时,都会加载它们并杀死我的内存
  • 计算动态和缺乏处理能力的几率

  • 有没有第三种更好的方法来处理这个问题?

    第三种方法是使用磁盘。。。但我的第一选择是根据需要计算赔率

    为什么你需要计算5张牌的所有组合,很多牌的价值是相同的,因为有4套牌,牌与牌之间有重复


    就我个人而言,我会根据打你手的手数和打你手的手数对你的手进行排名。根据这一点,您可以通过乘以活动手的数量来计算您赢得该表的概率。

    忽略颜色如何?从52个可能的值下降到13。您只剩下6175个选项。当然,颜色对于齐平很重要——但在这里,它几乎是二元的——所有颜色是否都相同?所以我们是12350(包括一些不可能的组合,实际上是7462,因为在其他组合中,一个数字包含多次,所以颜色必须不同)


    如果顺序很重要(例如开始手、翻滚、翻跟头、河流或它的名称),它会多得多,但仍然少于你的两百万。试着简化你的问题,你就会意识到它们是可以解决的。

    你需要在哪里运行你的程序?200万个数字(甚至更多)在任何现代计算机中似乎都不是问题,它不仅仅是200万个数字。这是2.6米*可能的手。可能的手工编译几乎有1000个,因此只有河流才有26亿的几率。使用磁盘吗?那是什么?硬盘,应用程序外部的一些持久性存储。例如,可以动态查询的手到赔率数据库。它会很大,虽然至少有千兆字节。我认为这是最糟糕的选择。@dirac存储是最糟糕的选择,不管你选择存储在哪里。另一个问题是,如果你的机器人将根据玩任意两张牌的玩家做出决定(因此基于玩家可能持有的全套牌),那么你的机器人将是一个失败者……如果玩家是正派的,那么他们不是在玩“atc”,而是在玩某种程度上定义的牌(可根据通向河流的动作进行模糊定义)这将从你的赔率所依据的全套牌中移除许多可能性。你不能忽略颜色。我也不能完全忽略它。我覆盖了潮水,我错过了什么吗?呃,我不知道-你说的是德州扑克,对吧?那么我想它有点复杂,总共有七张牌。但是,试着简化