c++ - 如何比较打印的数组索引以查看它们是否是一对
问题描述
从牌堆中抽 2 张牌并检查它们是否是一对(具有相同的等级)。重复此操作至少 1000 次,并计算从一副牌中抽出一对的概率。
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
using namespace std;
int counter;
string facevalue[] = { "Two", "Three", "Four", "Five", "Six", "Seven", "Eight","Nine", "Ten", "Jack", "Queen", "King", "Ace" };
string suit [] = { "Diamonds", "Hearts", "Spades", "Clubs" };
string getcard() {
string card;
int cardvalue = rand() % 13;
int cardsuit = rand() % 4;
card += facevalue[cardvalue];
card += " of ";
card += suit[cardsuit];
if(cardvalue = cardvalue){
counter = counter + 1;
}
return card;
}
int main() {
int numberofcards = 2;
int times = 1000;
for (int y =0; y < times; y++){
cout<<" "<<endl;
for (int i = 0; i < numberofcards; i++) {
cout << "You drew a " << getcard() << endl;
}
}
cout<<"counter: "<<counter<<endl;
}
所以在这里,cardvalue 控制从数组中打印出的内容。因此,如果 cardvalue 为 1,则 facevalue[cardvalue] 将是 facevalue[1],它将打印出“二”。
所以现在我正在尝试确定从牌组中随机挑选 2 张牌时 cardvalue 有多少次相同。
我做了
if(cardvalue = cardvalue){
counter = counter + 1;
}
我得到的结果是 926,这意味着当从一副牌中抽出 2 张牌 1000 次时,有 926 次牌值相同。这似乎不对,如果有人可以纠正我的程序或指导我完成整个过程,将不胜感激。
我试过 (cardvalue == cardvalue)
但我得到了 counter : 2000 。
解决方案
首先删除您的全局计数器变量,这是一种不好的做法。
然后你可以尝试这样的事情:
int main() {
int numberofcards = 2;
int times = 1000;
int counter = 0;
std::map<string, int> cardMap;
string currentCard;
int maxNbSameCard;
for (int y =0; y < times; y++){
cardMap.clear();
maxNbSameCard = 0;
for (int i = 0; i < numberofcards; i++) {
currentCard = getcard();
cardMap[currentCard]+=1;
cout << "You drew a " << currentCard << endl;
cout << "It is the " << cardMap[currentCard] << " time you get this card" << endl;
if(maxNbSameCard < cardMap[currentCard]) maxNbSameCard = cardMap[currentCard];
}
if(maxNbSameCard > 1) ++counter;
}
cout<<"counter: "<<counter<<endl;
}
- 请注意,“=”是一种做作而不是比较。
- 计数对不是 getcard() 的工作,它只是一个卡片创建者,它对以前创建的卡片没有可见性。
推荐阅读
- javascript - 如何将工具提示添加到反应列表中的项目
- visual-studio-code - 当我键入时,Vscode 不断将 html 标签插入到 javascript 中
- uri - 这是一个什么样的网址?
- html - 为什么 ✓ 符号有时会被替换为“一”?
- insert - 如何在 Python 上将用户插入 Google 群组
- excel - VBA 运行时错误 1004 仅在 Excel 2016 上
- node.js - 鼠标操作在量角器中无法正常工作
- excel - 在 Excel 中运行 Power Queries 时对 Sharepoint 进行多重身份验证
- cmake - Cmake 构建类型(RELEASE、DEBUG 等)编译器标志
- java - JList 类型不是通用的;