File tree Expand file tree Collapse file tree 1 file changed +8
-4
lines changed
Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -15,7 +15,7 @@ use pluto_eth2api::{
1515 } ,
1616 versioned:: { self , AttestationPayload } ,
1717} ;
18- use rand:: { Rng , SeedableRng , rngs:: StdRng } ;
18+ use rand:: { Rng , SeedableRng , rngs:: StdRng , seq :: index } ;
1919
2020/// A deterministic RNG that always returns the same byte value.
2121///
@@ -138,9 +138,13 @@ pub fn random_bit_list(length: usize) -> String {
138138 let mut bytes = [ 0u8 ; 32 ] ;
139139 let mut rng = rand:: thread_rng ( ) ;
140140
141- // Set 'length' random bits
142- for _ in 0 ..length {
143- let bit_idx = rng. r#gen :: < usize > ( ) % 256 ;
141+ assert ! (
142+ length <= 256 ,
143+ "cannot set {length} unique bits in a 256-bit bitlist" ,
144+ ) ;
145+
146+ // Set `length` distinct random bits.
147+ for bit_idx in index:: sample ( & mut rng, 256 , length) {
144148 let byte_idx = bit_idx / 8 ;
145149 let bit_offset = bit_idx % 8 ;
146150 bytes[ byte_idx] |= 1 << bit_offset;
You can’t perform that action at this time.
0 commit comments