Dash Core  0.12.2.1
P2P Digital Currency
random.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2014 The Bitcoin Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef BITCOIN_RANDOM_H
7 #define BITCOIN_RANDOM_H
8 
9 #include "uint256.h"
10 
11 #include <stdint.h>
12 
16 void RandAddSeed();
17 void RandAddSeedPerfmon();
18 
22 void GetRandBytes(unsigned char* buf, int num);
23 uint64_t GetRand(uint64_t nMax);
24 int GetRandInt(int nMax);
26 
31 void seed_insecure_rand(bool fDeterministic = false);
32 
40 extern uint32_t insecure_rand_Rz;
41 extern uint32_t insecure_rand_Rw;
42 static inline uint32_t insecure_rand(void)
43 {
44  insecure_rand_Rz = 36969 * (insecure_rand_Rz & 65535) + (insecure_rand_Rz >> 16);
45  insecure_rand_Rw = 18000 * (insecure_rand_Rw & 65535) + (insecure_rand_Rw >> 16);
46  return (insecure_rand_Rw << 16) + insecure_rand_Rz;
47 }
48 
53 {
54 private:
55  uint32_t nRz;
56  uint32_t nRw;
58 
59 public:
60  InsecureRand(bool _fDeterministic = false);
61 
69  int64_t operator()(int64_t nMax)
70  {
71  nRz = 36969 * (nRz & 65535) + (nRz >> 16);
72  nRw = 18000 * (nRw & 65535) + (nRw >> 16);
73  return ((nRw << 16) + nRz) % nMax;
74  }
75 };
76 
77 #endif // BITCOIN_RANDOM_H
void RandAddSeedPerfmon()
Definition: random.cpp:46
uint32_t insecure_rand_Rw
Definition: random.cpp:122
void RandAddSeed()
Definition: random.cpp:38
static uint32_t insecure_rand(void)
Definition: random.h:42
int GetRandInt(int nMax)
Definition: random.cpp:109
bool fDeterministic
Definition: random.h:57
uint64_t GetRand(uint64_t nMax)
Definition: random.cpp:94
uint256 GetRandHash()
Definition: random.cpp:114
uint32_t nRz
Definition: random.h:55
uint32_t nRw
Definition: random.h:56
InsecureRand(bool _fDeterministic=false)
Definition: random.cpp:141
int64_t operator()(int64_t nMax)
Definition: random.h:69
void GetRandBytes(unsigned char *buf, int num)
Definition: random.cpp:86
void seed_insecure_rand(bool fDeterministic=false)
Definition: random.cpp:123
uint32_t insecure_rand_Rz
Definition: random.cpp:121