@@ -15,6 +15,7 @@ extern crate rand_chacha;
1515extern crate rand_hc;
1616extern crate rand_pcg;
1717extern crate rand_xorshift;
18+ extern crate rand_xoshiro;
1819
1920const RAND_BENCH_N : u64 = 1000 ;
2021const BYTES_LEN : usize = 1024 ;
@@ -30,6 +31,9 @@ use rand_chacha::ChaChaRng;
3031use rand_hc:: { Hc128Rng , Hc128Core } ;
3132use rand_pcg:: { Lcg64Xsh32 , Mcg128Xsl64 } ;
3233use rand_xorshift:: XorShiftRng ;
34+ use rand_xoshiro:: { Xoshiro256StarStar , Xoshiro256Plus , Xoshiro128StarStar ,
35+ Xoshiro128Plus , Xoroshiro128StarStar , Xoroshiro128Plus , SplitMix64 ,
36+ Xoroshiro64StarStar , Xoroshiro64Star } ;
3337
3438macro_rules! gen_bytes {
3539 ( $fnn: ident, $gen: expr) => {
@@ -49,6 +53,15 @@ macro_rules! gen_bytes {
4953}
5054
5155gen_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( ) ) ;
5265gen_bytes ! ( gen_bytes_lcg64_xsh32, Lcg64Xsh32 :: from_entropy( ) ) ;
5366gen_bytes ! ( gen_bytes_mcg128_xsh64, Mcg128Xsl64 :: from_entropy( ) ) ;
5467gen_bytes ! ( gen_bytes_chacha20, ChaChaRng :: from_entropy( ) ) ;
@@ -77,6 +90,15 @@ macro_rules! gen_uint {
7790}
7891
7992gen_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( ) ) ;
80102gen_uint ! ( gen_u32_lcg64_xsh32, u32 , Lcg64Xsh32 :: from_entropy( ) ) ;
81103gen_uint ! ( gen_u32_mcg128_xsh64, u32 , Mcg128Xsl64 :: from_entropy( ) ) ;
82104gen_uint ! ( gen_u32_chacha20, u32 , ChaChaRng :: from_entropy( ) ) ;
@@ -88,6 +110,15 @@ gen_uint!(gen_u32_small, u32, SmallRng::from_entropy());
88110gen_uint ! ( gen_u32_os, u32 , OsRng :: new( ) . unwrap( ) ) ;
89111
90112gen_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( ) ) ;
91122gen_uint ! ( gen_u64_lcg64_xsh32, u64 , Lcg64Xsh32 :: from_entropy( ) ) ;
92123gen_uint ! ( gen_u64_mcg128_xsh64, u64 , Mcg128Xsl64 :: from_entropy( ) ) ;
93124gen_uint ! ( gen_u64_chacha20, u64 , ChaChaRng :: from_entropy( ) ) ;
@@ -123,6 +154,15 @@ macro_rules! init_gen {
123154}
124155
125156init_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 ) ;
126166init_gen ! ( init_lcg64_xsh32, Lcg64Xsh32 ) ;
127167init_gen ! ( init_mcg128_xsh64, Mcg128Xsl64 ) ;
128168init_gen ! ( init_hc128, Hc128Rng ) ;
0 commit comments