@@ -15,6 +15,7 @@ extern crate rand_chacha;
15
15
extern crate rand_hc;
16
16
extern crate rand_pcg;
17
17
extern crate rand_xorshift;
18
+ extern crate rand_xoshiro;
18
19
19
20
const RAND_BENCH_N : u64 = 1000 ;
20
21
const BYTES_LEN : usize = 1024 ;
@@ -30,6 +31,9 @@ use rand_chacha::ChaChaRng;
30
31
use rand_hc:: { Hc128Rng , Hc128Core } ;
31
32
use rand_pcg:: { Lcg64Xsh32 , Mcg128Xsl64 } ;
32
33
use rand_xorshift:: XorShiftRng ;
34
+ use rand_xoshiro:: { Xoshiro256StarStar , Xoshiro256Plus , Xoshiro128StarStar ,
35
+ Xoshiro128Plus , Xoroshiro128StarStar , Xoroshiro128Plus , SplitMix64 ,
36
+ Xoroshiro64StarStar , Xoroshiro64Star } ;
33
37
34
38
macro_rules! gen_bytes {
35
39
( $fnn: ident, $gen: expr) => {
@@ -49,6 +53,15 @@ macro_rules! gen_bytes {
49
53
}
50
54
51
55
gen_bytes ! ( gen_bytes_xorshift, XorShiftRng :: from_entropy( ) ) ;
56
+ gen_bytes ! ( gen_bytes_xoshiro256starstar, Xoshiro256StarStar :: from_entropy( ) ) ;
57
+ gen_bytes ! ( gen_bytes_xoshiro256plus, Xoshiro256Plus :: from_entropy( ) ) ;
58
+ gen_bytes ! ( gen_bytes_xoshiro128starstar, Xoshiro128StarStar :: from_entropy( ) ) ;
59
+ gen_bytes ! ( gen_bytes_xoshiro128plus, Xoshiro128Plus :: from_entropy( ) ) ;
60
+ gen_bytes ! ( gen_bytes_xoroshiro128starstar, Xoroshiro128StarStar :: from_entropy( ) ) ;
61
+ gen_bytes ! ( gen_bytes_xoroshiro128plus, Xoroshiro128Plus :: from_entropy( ) ) ;
62
+ gen_bytes ! ( gen_bytes_xoroshiro64starstar, Xoroshiro64StarStar :: from_entropy( ) ) ;
63
+ gen_bytes ! ( gen_bytes_xoroshiro64star, Xoroshiro64Star :: from_entropy( ) ) ;
64
+ gen_bytes ! ( gen_bytes_splitmix64, SplitMix64 :: from_entropy( ) ) ;
52
65
gen_bytes ! ( gen_bytes_lcg64_xsh32, Lcg64Xsh32 :: from_entropy( ) ) ;
53
66
gen_bytes ! ( gen_bytes_mcg128_xsh64, Mcg128Xsl64 :: from_entropy( ) ) ;
54
67
gen_bytes ! ( gen_bytes_chacha20, ChaChaRng :: from_entropy( ) ) ;
@@ -77,6 +90,15 @@ macro_rules! gen_uint {
77
90
}
78
91
79
92
gen_uint ! ( gen_u32_xorshift, u32 , XorShiftRng :: from_entropy( ) ) ;
93
+ gen_uint ! ( gen_u32_xoshiro256starstar, u32 , Xoshiro256StarStar :: from_entropy( ) ) ;
94
+ gen_uint ! ( gen_u32_xoshiro256plus, u32 , Xoshiro256Plus :: from_entropy( ) ) ;
95
+ gen_uint ! ( gen_u32_xoshiro128starstar, u32 , Xoshiro128StarStar :: from_entropy( ) ) ;
96
+ gen_uint ! ( gen_u32_xoshiro128plus, u32 , Xoshiro128Plus :: from_entropy( ) ) ;
97
+ gen_uint ! ( gen_u32_xoroshiro128starstar, u32 , Xoroshiro128StarStar :: from_entropy( ) ) ;
98
+ gen_uint ! ( gen_u32_xoroshiro128plus, u32 , Xoroshiro128Plus :: from_entropy( ) ) ;
99
+ gen_uint ! ( gen_u32_xoroshiro64starstar, u32 , Xoroshiro64StarStar :: from_entropy( ) ) ;
100
+ gen_uint ! ( gen_u32_xoroshiro64star, u32 , Xoroshiro64Star :: from_entropy( ) ) ;
101
+ gen_uint ! ( gen_u32_splitmix64, u32 , SplitMix64 :: from_entropy( ) ) ;
80
102
gen_uint ! ( gen_u32_lcg64_xsh32, u32 , Lcg64Xsh32 :: from_entropy( ) ) ;
81
103
gen_uint ! ( gen_u32_mcg128_xsh64, u32 , Mcg128Xsl64 :: from_entropy( ) ) ;
82
104
gen_uint ! ( gen_u32_chacha20, u32 , ChaChaRng :: from_entropy( ) ) ;
@@ -88,6 +110,15 @@ gen_uint!(gen_u32_small, u32, SmallRng::from_entropy());
88
110
gen_uint ! ( gen_u32_os, u32 , OsRng :: new( ) . unwrap( ) ) ;
89
111
90
112
gen_uint ! ( gen_u64_xorshift, u64 , XorShiftRng :: from_entropy( ) ) ;
113
+ gen_uint ! ( gen_u64_xoshiro256starstar, u64 , Xoshiro256StarStar :: from_entropy( ) ) ;
114
+ gen_uint ! ( gen_u64_xoshiro256plus, u64 , Xoshiro256Plus :: from_entropy( ) ) ;
115
+ gen_uint ! ( gen_u64_xoshiro128starstar, u64 , Xoshiro128StarStar :: from_entropy( ) ) ;
116
+ gen_uint ! ( gen_u64_xoshiro128plus, u64 , Xoshiro128Plus :: from_entropy( ) ) ;
117
+ gen_uint ! ( gen_u64_xoroshiro128starstar, u64 , Xoroshiro128StarStar :: from_entropy( ) ) ;
118
+ gen_uint ! ( gen_u64_xoroshiro128plus, u64 , Xoroshiro128Plus :: from_entropy( ) ) ;
119
+ gen_uint ! ( gen_u64_xoroshiro64starstar, u64 , Xoroshiro64StarStar :: from_entropy( ) ) ;
120
+ gen_uint ! ( gen_u64_xoroshiro64star, u64 , Xoroshiro64Star :: from_entropy( ) ) ;
121
+ gen_uint ! ( gen_u64_splitmix64, u64 , SplitMix64 :: from_entropy( ) ) ;
91
122
gen_uint ! ( gen_u64_lcg64_xsh32, u64 , Lcg64Xsh32 :: from_entropy( ) ) ;
92
123
gen_uint ! ( gen_u64_mcg128_xsh64, u64 , Mcg128Xsl64 :: from_entropy( ) ) ;
93
124
gen_uint ! ( gen_u64_chacha20, u64 , ChaChaRng :: from_entropy( ) ) ;
@@ -123,6 +154,15 @@ macro_rules! init_gen {
123
154
}
124
155
125
156
init_gen ! ( init_xorshift, XorShiftRng ) ;
157
+ init_gen ! ( init_xoshiro256starstar, Xoshiro256StarStar ) ;
158
+ init_gen ! ( init_xoshiro256plus, Xoshiro256Plus ) ;
159
+ init_gen ! ( init_xoshiro128starstar, Xoshiro128StarStar ) ;
160
+ init_gen ! ( init_xoshiro128plus, Xoshiro128Plus ) ;
161
+ init_gen ! ( init_xoroshiro128starstar, Xoroshiro128StarStar ) ;
162
+ init_gen ! ( init_xoroshiro128plus, Xoroshiro128Plus ) ;
163
+ init_gen ! ( init_xoroshiro64starstar, Xoroshiro64StarStar ) ;
164
+ init_gen ! ( init_xoroshiro64star, Xoroshiro64Star ) ;
165
+ init_gen ! ( init_splitmix64, SplitMix64 ) ;
126
166
init_gen ! ( init_lcg64_xsh32, Lcg64Xsh32 ) ;
127
167
init_gen ! ( init_mcg128_xsh64, Mcg128Xsl64 ) ;
128
168
init_gen ! ( init_hc128, Hc128Rng ) ;
0 commit comments