需要弄清楚如何扫描槽组合

时间:2017-09-03 08:44:50

标签: c loops game-theory

我一直在研究老虎机代码,我有卷轴输入,我编码了可能发生的所有不同组合。我把它输出到一个文件,确定一切都在那里。现在我需要以某种方式扫描所有组合并根据支付规则(2x,3x和5x相同的符号)和规则,如果2胜,那么ex。 aabbb只支付高额支付的款项,为所有支付条件设置计数器。

这是我到目前为止所做的:

#include <stdio.h>

int main() {
    freopen("C:\\tmp\\output.txt", "w", stdout);
    char reel1[37] = { 'A', '1', 'W', 'Q', '9', 'L', '1', 'J', 'H', 'Q', '9', 'W', '1', 'A', 'M', 'K', 'Q', 'L', 'A', '9', '1', 'M', 'K', 'Q', 'H', '9', 'A', 'Q', 'K', 'T', '9', 'J', 'W', '9', '1', 'L', '9' };
    char reel2[36] = { 'A', 'K', 'L', '1', '9', 'M', 'J', '1', 'K', 'M', 'Q', '9', 'T', 'A', '1', 'Q', 'W', 'K', '9', 'L', 'J', '1', 'Q', 'L', 'K', 'J', 'W', 'A', '9', 'K', 'H', 'Q', '1', 'K', 'Q', '1' };
    char reel3[35] = { 'J', 'K', '9', 'A', '1', 'Q', 'L', '9', 'A', '1', 'T', 'J', '9', 'A', 'H', '1', 'J', '9', 'L', 'Q', '1', 'J', 'H', '9', 'K', '1', 'M', 'A', 'J', 'K', 'W', '9', '1', 'J', '1' };
    char reel4[32] = { 'K', 'A', 'L', 'Q', '1', 'M', 'A', 'K', 'J', 'M', 'Q', '1', 'H', 'J', 'A', 'K', 'M', '9', 'J', 'H', '1', 'Q', '9', 'J', '1', 'W', 'K', '9', 'J', 'T', '1', 'J' };
    char reel5[32] = { 'J', '1', 'Q', 'W', 'K', '9', 'Q', 'J', 'K', '9', '1', 'H', 'J', '9', 'A', 'M', '9', 'J', '1', '9', 'L', 'A', '9', 'J', 'L', '9', 'K', 'Q', '9', 'T', 'K', 'Q' };
    int a, b, c, d, e;
    for (a = 0; a <= 36; a++) {
        for (b = 0; b <= 35; b++) {
            for (c = 0; c <= 34; c++) {
                for (d = 0; d <= 31; d++) {
                    for (e = 0; e <= 31; e++) {
                        printf("%c%c%c%c%c\n", reel1[a], reel2[b], reel3[c], reel4[d], reel5[e]);
                    }
                }
            }
        }
    }
    return 0;
}

我现在如何解决这个问题?我知道我必须为所有支付组合设置计数器,一旦它出现并且是卷轴中收入最高的一个,就要迭代它直到我已经通过整个列表。但是如何到达那里击败我。如何扫描所有组合?有人有建议吗?

1 个答案:

答案 0 :(得分:0)

您的代码会打印所有47,738,880种可能的插槽值组合。由于车轮上有重复的物品,因此顺序可能并不重要。

以下是您可以继续操作的方法:不使用打印组合,而是调用具有以下5个插槽值的函数:

  • 检查各种获胜组合并保持最佳状态
  • 输出组合以及相应的最佳胜利。

然后,您可以运行程序并将其输出管道传输到sort | uniq -c,以获取已删除(并计算)重复项的列表。

您可能希望省略列表中的丢失组合。

除了打印获胜组合之外,您还可以计算总可能的胜利(上面计算的所有胜利的总和)并将其除以输出总数(37 * 36 * 35 * 32 * 32)来验证玩家和赌场的赔率是多少。