dethalvabarnet: Fick just en genomgång i permutationer av min käre far. Givetvis vore det intressant att ställa upp en algorithm. Du får gärna tipsa om några bra sidor om du har några.
Dock är det nuvarande programmet en simulator av den typ att den har en kortlek i form av en vektor och sedan drar 5 rand()-genererade kort och lägger dem i vectorn hand.
Kan för övrigt säga att jag lät servern stå på över natten och efter 4 miljarder dragningar så ligger sannolikheten på 0.1654 % Funderar även på att lägga till någon typ av intelligens så att den kan kasta 2 "dåliga" kort och plocka upp 2 nya, men vi får se hur det går med det
För övrigt så behövs inte valörerna i detta exempel, men tänkte att de kanske behövs i något framtida projekt
Kod:
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <ctime>
using namespace std;
int main()
{
double total=0;
double house=0;
vector<pair<string,int> > kortlek,backup;
vector<pair<string,int> > hand;
for(int i = 1;i <=13;i++)
backup.push_back(make_pair(string("H"),i));
for(int i = 1;i <=13;i++)
backup.push_back(make_pair(string("R"),i));
for(int i = 1;i <=13;i++)
backup.push_back(make_pair(string("K"),i));
for(int i = 1;i <=13;i++)
backup.push_back(make_pair(string("S"),i));
srand(time(NULL));
while(true)
{
total++;
kortlek = backup;
for(int i = 0; i < 5; i++)
{
int i = rand()%kortlek.size();
hand.push_back(kortlek[i]);
kortlek.erase(kortlek.begin()+i);
}
int triss = 0;
for(int i = 0; i < hand.size(); i++)
if(hand[i].second == hand[0].second)
{
triss++;
hand.erase(hand.begin()+i);
}
if(triss == 3)
{
if(hand[0].second == hand[1].second)
house++;
cout << "\r" << house/total << "\t" << total;
hand.clear();
}
}
}