-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerators.cpp
53 lines (46 loc) · 1.4 KB
/
generators.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
#include "generators.hpp"
#include <vector>
#include <cstdlib>
#include <chrono>
#include <random>
using namespace std;
int *exponential_generator(float median, int num)
{ // use exponential distribution
float *arr = new float[num];
int *res = new int[num];
unsigned seed = chrono::system_clock::now().time_since_epoch().count();
default_random_engine generator(seed);
exponential_distribution<double> distribution(median);
for (int i = 0; i < num; i++)
{
double number = distribution(generator);
arr[i] = round(number * 100.0) / 100.0; // 2 decimal places
res[i] = arr[i] * 10;
if (res[i] == 0)
res[i] += 1;
}
return res;
}
int *uniform_generator(int num)
{ // use uniform distribution
int *arr = new int[num];
unsigned seed = chrono::system_clock::now().time_since_epoch().count();
default_random_engine generator(seed);
uniform_int_distribution<int> distribution(1, 7);
for (int i = 0; i < num; i++)
{
arr[i] = distribution(generator);
}
return arr;
}
int random_generator(int max)
{ // returns random number from[0, max-1]
unsigned seed = chrono::system_clock::now().time_since_epoch().count();
default_random_engine generator(seed);
uniform_int_distribution<int> distribution(0, max - 1);
return distribution(generator);
}
bool propability(int k)
{
return (rand() % 100) < k;
}