Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- This is a simulator that simulates card Draws/Redraws for lv 80 astrologian opener
- It consists of 5 Draws (2 normal and 3 from Sleeve Draw) and 3 Redraws
- It uses the optimal strategy of playing the card you're holding if you don't already have its seal
- or redrawing if you have the seal and Redraw stacks
- It doesn't account for Lord/Ladies since they don't influence seals
- For now it doesn't account Melee/Ranged composition either, will possibly update later
- My results:
- Sample size: 10000000
- 1 seal: 0.0103%
- 2 seals: 8.52441%
- 3 seals: 91.4653%
- To use just select the sample size (100000 by default)
- and wether you want to print the results to console or file
- File will be named "cards.out"
- !!! Absurdly large sample sizes may not work correctly due to overflow !!!
- */
- #define sample_size 100000
- #define write_to_file true
- //Copyright Sirk'al Alis @ Shiva of Wololo wipefest
- //Code below this line, DON'T EDIT!!!
- #include <iostream>
- #include <fstream>
- #include <stdlib.h>
- #include <time.h>
- using namespace std;
- unsigned long long int results[4]={0};
- int draw()
- {
- int card;
- card=rand()%6;
- return card;
- }
- int redraw(int icard)
- {
- int card;
- card=rand()%5;
- if (card<icard)
- return card;
- else
- return card+1;
- }
- int sim()
- {
- bool seals[3]={0};
- int card,seal,stacks=3;
- for (int i=1;i<=5;i++)
- {
- card=draw();
- seal=card/2;
- if (seals[seal]==false)
- seals[seal]=true;
- else
- while (stacks)
- {
- stacks--;
- card=redraw(card);
- seal=card/2;
- if (seals[seal]==false)
- {
- seals[seal]=true;
- break;
- }
- }
- }
- int p=0;
- for (int i=0;i<3;i++)
- if (seals[i])
- p++;
- return p;
- }
- void printf()
- {
- ofstream g("cards.out");
- g<<"Sample size: "<<sample_size<<'\n';
- g<<"1 seal: "<<100*results[1]/(float)sample_size<<"%\n";
- g<<"2 seals: "<<100*results[2]/(float)sample_size<<"%\n";
- g<<"3 seals: "<<100*results[3]/(float)sample_size<<"%\n";
- }
- void printc()
- {
- cout<<"Sample size: "<<sample_size<<'\n';
- cout<<"1 seal: "<<100*results[1]/(float)sample_size<<"%\n";
- cout<<"2 seals: "<<100*results[2]/(float)sample_size<<"%\n";
- cout<<"3 seals: "<<100*results[3]/(float)sample_size<<"%\n";
- }
- void simulation()
- {
- int rez;
- for(unsigned long long int i=1;i<=sample_size;i++)
- {
- rez=sim();
- results[rez]++;
- }
- if (write_to_file)
- printf();
- else
- printc();
- }
- int main()
- {
- srand(time(NULL));
- simulation();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement