C++ 黑杰克游戏的起始算法

C++ 黑杰克游戏的起始算法,c++,algorithm,blackjack,C++,Algorithm,Blackjack,我必须为black jack游戏的第一部分想出一个程序。这个问题要求拿出2张随机牌,在牌组中输入52张牌,得到它们的总数。如果我将牌组设置为13(牌组中不同的牌的数量),我可以很容易地做到这一点,但是我在计算52时遇到了问题。我不能对卡片使用if-else或switch语句。我的问题是计算总数。当srand的种子输入设置为-22时,我得到的总计值不正确。感谢您的帮助。谢谢 #include <iostream> #include <cstdlib> #include &l

我必须为black jack游戏的第一部分想出一个程序。这个问题要求拿出2张随机牌,在牌组中输入52张牌,得到它们的总数。如果我将牌组设置为13(牌组中不同的牌的数量),我可以很容易地做到这一点,但是我在计算52时遇到了问题。我不能对卡片使用if-else或switch语句。我的问题是计算总数。当srand的种子输入设置为-22时,我得到的总计值不正确。感谢您的帮助。谢谢

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

const int CARDS_IN_DECK = 52;
int main()
{
    int seed, i;
    double card, total;
    cout << "Enter the seed for the random number generator: ";
    cin >> seed;
    srand(seed);
    cout << endl << endl;
    cout.setf(ios::fixed);
    cout.precision(0);
    for(i = 0; i <= 1; i++) {
        card = rand() % CARDS_IN_DECK + 1;
        card = (card + 1) / 4.0;
        if(card >= 10) {
            card = 10;
        }
        total += card;
        if(i == 0) {
            cout << "Your first card is " << card << endl;
        } else if(i == 1) {
            cout << "Your second card is " << card << endl;
        }
    }
    cout << "Your total points are " << total;
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
卡组中的常数int卡=52;
int main()
{
int种子,i;
双卡,共;
种子;
srand(种子);

我能多次运行你的代码并得到正确的种子值总数-22吗?你能澄清你的问题吗?我还想补充一点,srand将一个无符号整数作为种子值。请注意,这个算法并没有给出正确的几率。如果你玩一副牌,画两个9的几率是4/52*3/51,而这里是4/52*4/52.绘制两张卡片并计算它们的和是两个独立的操作;检查第一张卡片的结果,你就会知道哪一张出了问题(然后你可以从示例中删除另一张)。建议:将所有变量声明为无符号整数(
未签名整数种子,i,卡片,总计
).但无论如何,这种方法不会走得太远(我在过去编写了自己的BJ模拟器来评估策略)。最好为卡片声明一个类,将卡片放入数组(卡片组),洗牌牌牌组并从牌组中随机选取。我已将所有变量设为无符号int,这简化了问题。种子输入为-22时,我的教授得到了5+2=7,其中我得到了4+1=5。当种子为正数时,我们得到了相同的答案,但当种子为负数时,我错了。有什么想法吗?