File tree Expand file tree Collapse file tree 2 files changed +6
-15
lines changed Expand file tree Collapse file tree 2 files changed +6
-15
lines changed Original file line number Diff line number Diff line change @@ -116,7 +116,7 @@ impl<I: ExactSizeIterator + Iterator + Clone> Iterator for WindowHintedIterator<
116
116
}
117
117
118
118
#[ bench]
119
- fn seq_iter_unhinted_choose_from_100 ( b : & mut Bencher ) {
119
+ fn seq_iter_unhinted_choose_from_1000 ( b : & mut Bencher ) {
120
120
let mut rng = SmallRng :: from_rng ( thread_rng ( ) ) . unwrap ( ) ;
121
121
let x : & [ usize ] = & [ 1 ; 1000 ] ;
122
122
b. iter ( || {
@@ -125,9 +125,9 @@ fn seq_iter_unhinted_choose_from_100(b: &mut Bencher) {
125
125
}
126
126
127
127
#[ bench]
128
- fn seq_iter_window_hinted_choose_from_100 ( b : & mut Bencher ) {
128
+ fn seq_iter_window_hinted_choose_from_1000 ( b : & mut Bencher ) {
129
129
let mut rng = SmallRng :: from_rng ( thread_rng ( ) ) . unwrap ( ) ;
130
- let x : & [ usize ] = & [ 1 ; 100 ] ;
130
+ let x : & [ usize ] = & [ 1 ; 1000 ] ;
131
131
b. iter ( || {
132
132
WindowHintedIterator { iter : x. iter ( ) , window_size : 7 } . choose ( & mut rng)
133
133
} )
Original file line number Diff line number Diff line change @@ -191,17 +191,7 @@ pub trait IteratorRandom: Iterator + Sized {
191
191
let mut result = None ;
192
192
193
193
if upper == Some ( lower) {
194
- // Remove this once we can specialize on ExactSizeIterator
195
194
return if lower == 0 { None } else { self . nth ( rng. gen_range ( 0 , lower) ) } ;
196
- } else if lower <= 1 {
197
- result = self . next ( ) ;
198
- if result. is_none ( ) {
199
- return result;
200
- }
201
- consumed = 1 ;
202
- let hint = self . size_hint ( ) ;
203
- lower = hint. 0 ;
204
- upper = hint. 1 ;
205
195
}
206
196
207
197
// Continue until the iterator is exhausted
@@ -617,8 +607,9 @@ mod test {
617
607
}
618
608
for count in chosen. iter ( ) {
619
609
// Samples should follow Binomial(1000, 1/9)
620
- let err = * count - 1000 / 9 ;
621
- assert ! ( -30 <= err && err <= 30 ) ;
610
+ // Octave: binopdf(x, 1000, 1/9) gives the prob of *count == x
611
+ // Note: have seen 153, which is unlikely but not impossible.
612
+ assert ! ( 72 < * count && * count < 154 , "count not close to 1000/9: {}" , count) ;
622
613
}
623
614
}
624
615
You can’t perform that action at this time.
0 commit comments