blob: c4208a009a38393fb58022f506cd951ba527a82d [file] [log] [blame]
#![no_std]
extern crate rand;
use rand::SeedableRng;
use rand::rngs::SmallRng;
use rand::distributions::{Distribution, Bernoulli};
/// This test should make sure that we don't accidentally have undefined
/// behavior for large propabilties due to
/// https://github.com/rust-lang/rust/issues/10184.
/// Expressions like `1.0*(u64::MAX as f64) as u64` have to be avoided.
#[test]
fn large_probability() {
let p = 1. - ::core::f64::EPSILON / 2.;
assert!(p < 1.);
let d = Bernoulli::new(p);
let mut rng = SmallRng::from_seed(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
for _ in 0..10 {
assert!(d.sample(&mut rng), "extremely unlikely to fail by accident");
}
}