blob: cf1b095b50b4a23a0774da7da7461eb94a5951bb (
plain)
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
|
#include "../crush/Bucket.h"
using namespace crush;
#include <iostream>
#include <vector>
using namespace std;
ostream& operator<<(ostream &out, const vector<int> &v)
{
out << "[";
for (int i=0; i<v.size(); i++) {
if (i) out << " ";
out << v[i];
}
out << "]";
return out;
}
int main()
{
Hash h(73);
vector<int> disks;
for (int i=0; i<20; i++)
disks.push_back(i);
/*
UniformBucket ub(1, 1, 0, 10, disks);
ub.make_primes(h);
cout << "primes are " << ub.primes << endl;
*/
MixedBucket mb(2, 1);
for (int i=0;i<20;i++)
mb.add_item(i, 10);
/*
MixedBucket b(3, 1);
b.add_item(1, ub.get_weight());
b.add_item(2, mb.get_weight());
*/
MixedBucket b= mb;
vector<int> ocount(disks.size());
int numrep = 3;
vector<int> v(numrep);
for (int x=1; x<1000000; x++) {
//cout << H(x) << "\t" << h(x) << endl;
for (int i=0; i<numrep; i++) {
int d = b.choose_r(x, i, h);
v[i] = d;
ocount[d]++;
}
//cout << v << "\t" << endl;//ocount << endl;
}
for (int i=0; i<ocount.size(); i++) {
cout << "disk " << i << " has " << ocount[i] << endl;
}
}
|