-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBag.cpp
82 lines (71 loc) · 1.96 KB
/
Bag.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* Bag.cpp
*
* Created on: Jun 1, 2018
* Author: lohmann
*/
#include "Bag.h"
Bag::Bag() : deck(), shuffled_deck() {}
Bag::Bag(deque<int> numbers) : deck(numbers), shuffled_deck(numbers) {}
void Bag::print_bag(){
std::cout << "The bag contains: " << std::endl;
std::deque<int>::iterator it = shuffled_deck.begin();
while(it != shuffled_deck.end())
std::cout << ' ' << *it++;
std::cout << endl;
}
// Original method by Fisher and Yates
void Bag::shuffle(){
std::deque<int> deck_backup = shuffled_deck;
srand(time(NULL));
int choose = 0;
shuffled_deck.clear();
while(!deck_backup.empty()){
choose = rand() % deck_backup.size();
shuffled_deck.push_back(deck_backup.at(choose));
deck_backup.erase(deck_backup.begin()+choose);
}
}
// Moderm method by Richard Durstenfeld
void Bag::shuffle_p(){
std::deque<int> deck_backup = shuffled_deck;
srand(time(NULL));
int choose = 0;
shuffled_deck.clear();
while(!deck_backup.empty()){
choose = rand() % deck_backup.size();
shuffled_deck.push_back(deck_backup.at(choose));
deck_backup.at(choose) = deck_backup.at(deck_backup.size()-1);
deck_backup.pop_back();
}
}
// Original method by Fisher and Yates
// get the alredy shuffle bag
void Bag::re_shuffle(){
std::deque<int> deck_backup = shuffled_deck;
srand(time(NULL));
int choose = 0;
shuffled_deck.clear();
while(!deck_backup.empty()){
choose = rand() % deck_backup.size();
shuffled_deck.push_back(deck_backup.at(choose));
deck_backup.erase(deck_backup.begin()+choose);
}
}
// Moderm method by Richard Durstenfeld
// get the alredy shuffle bag
void Bag::re_shuffle_p(){
std::deque<int> deck_backup = shuffled_deck;
srand(time(NULL));
int choose = 0;
shuffled_deck.clear();
while(!deck_backup.empty()){
choose = rand() % deck_backup.size();
shuffled_deck.push_back(deck_backup.at(choose));
deck_backup.at(choose) = deck_backup.at(deck_backup.size()-1);
deck_backup.pop_back();
}
}
Bag::~Bag() {
// TODO Auto-generated destructor stub
}