-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRandomizer.h
84 lines (66 loc) · 1.86 KB
/
Randomizer.h
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
/**
* @file Randomizer.h
* @brief Randomizer is a lib which contains a 'Randomize' function.
*
* Copyright (c) 2020-forever Vlad Rogozin ([email protected])
*
* Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt
* or copy at http://opensource.org/licenses/MIT)
*/
#ifndef RED_RANDOMIZER_H
#define RED_RANDOMIZER_H
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define REDRANDOMIZER_VERSION "1.2"
#include "RedTypes.h"
namespace Red {
/**
* @brief Randomize
*
* Used to generate a long random number.
*
* @return Long random number.
*/
inline unsigned long long int * Randomize() {
unsigned long long *randnumber = new unsigned long long int(0);
int digits[20];
for (int i = 19; i >= 1; i--) {
digits[i] = rand() % 10;
}
for (int i = 19; i >= 1; i--) {
unsigned long long power = pow(10, i - 1);
if (power % 2 != 0 && power != 1) {
power++;
}
*randnumber += power * digits[i];
}
return randnumber;
}
/**
* @brief Randomizer_custom
*
* Used to generate a long random number.
*
* @param len Len of end num.
*
* @return Long random number.
*/
inline Red::bignum_t * Randomizer_custom(unsigned long long int *len) {
Red::bignum_t *randnumber = new Red::bignum_t();
int *digits = new int[20]();
for (int i = *len; i >= 1; i--) {
digits[i] = rand() % 10;
}
for (int i = *len; i >= 1; i--) {
unsigned long long power = pow(10, i - 1);
if (power % 2 != 0 && power != 1) {
power++;
}
*randnumber += power * digits[i];
}
delete[] digits;
return randnumber;
}
}
#endif // RED_RANDOMIZER_H