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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#include "random.h"
#include <cstdlib>
#include <iostream>
namespace PRJID {
static bool seeded=false;
void Random::sseed() {
sseed(time(NULL));
}
bool Random::boolean() {
if (sget(2)==1) return true;
return false;
}
void Random::sseed(unsigned int s) {
srand(s);
seeded=true;
}
std::vector <int> Random::randomize(std::vector <int> a) {
int r;
for (unsigned int i=0;i<a.size()/2;i++) {
r=1+get((a[i]/2));
a[i]-=r;
a[i+a.size()/2]+=r;
}
return a;
}
unsigned int Random::get() {
return rand();
}
unsigned int Random::get(unsigned int below) {
if (below<=1) return 0;
return get()%below;
}
float Random::sgetf() {
float i;
i=(float)sget(100000);
i/=100000;
return i;
}
bool Random::sboolean() {
if (sget(2)==1) return true;
return false;
}
int Random::ssign() {
if (sboolean()) return -1;
return 1;
}
int Random::sget() {
return rand();
}
int Random::sget(unsigned int below) {
if (below<=1) return 0;
return sget()%below;
}
int Random::sget(unsigned int above,unsigned int below) {
int r;
r=above;
r+=sget(below-above);
return r;
}
Random *sirg=NULL;
Random *Random::instance() {
if (sirg==NULL) {
sirg=new Random();
}
return sirg;
}
}
|