@@ -855,19 +855,7 @@ pub fn weak_rng() -> XorShiftRng {
855
855
}
856
856
}
857
857
858
- /// Controls how the thread-local RNG is reseeded.
859
- struct ThreadRngReseeder ;
860
-
861
- impl reseeding:: Reseeder < StdRng > for ThreadRngReseeder {
862
- fn reseed ( & mut self , rng : & mut StdRng ) {
863
- * rng = match StdRng :: new ( ) {
864
- Ok ( r) => r,
865
- Err ( e) => panic ! ( "could not reseed thread_rng: {}" , e)
866
- }
867
- }
868
- }
869
- const THREAD_RNG_RESEED_THRESHOLD : u64 = 32_768 ;
870
- type ThreadRngInner = reseeding:: ReseedingRng < StdRng , ThreadRngReseeder > ;
858
+ type ThreadRngInner = os:: OsRng ;
871
859
872
860
/// The thread-local RNG.
873
861
#[ derive( Clone ) ]
@@ -881,21 +869,13 @@ pub struct ThreadRng {
881
869
///
882
870
/// The RNG provided will reseed itself from the operating system
883
871
/// after generating a certain amount of randomness.
884
- ///
885
- /// The internal RNG used is platform and architecture dependent, even
886
- /// if the operating system random number generator is rigged to give
887
- /// the same sequence always. If absolute consistency is required,
888
- /// explicitly select an RNG, e.g. `IsaacRng` or `Isaac64Rng`.
889
872
pub fn thread_rng ( ) -> ThreadRng {
890
873
// used to make space in TLS for a random number generator
891
874
thread_local ! ( static THREAD_RNG_KEY : Rc <RefCell <ThreadRngInner >> = {
892
- let r = match StdRng :: new( ) {
875
+ let rng = match os :: OsRng :: new( ) {
893
876
Ok ( r) => r,
894
877
Err ( e) => panic!( "could not initialize thread_rng: {}" , e)
895
878
} ;
896
- let rng = reseeding:: ReseedingRng :: new( r,
897
- THREAD_RNG_RESEED_THRESHOLD ,
898
- ThreadRngReseeder ) ;
899
879
Rc :: new( RefCell :: new( rng) )
900
880
} ) ;
901
881
0 commit comments