From ff5673ae1b74b8ad59ee23921e0bb4e25349d10f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 5 Feb 2016 04:30:19 -0700 Subject: [PATCH] add rand.float32 to standard library --- std/rand.zig | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/std/rand.zig b/std/rand.zig index d925f3fad1..1bd9c3bccf 100644 --- a/std/rand.zig +++ b/std/rand.zig @@ -53,6 +53,11 @@ pub struct Rand { } } + pub fn float32(r: &Rand) -> f32 { + const precision = 16777216; + return f32(r.range_u64(0, precision)) / precision; + } + fn generate_numbers(r: &Rand) { for (item, r.array, i) { const y : u32 = (item & 0x80000000) + (r.array[(i + 1) % ARRAY_SIZE] & 0x7fffffff); @@ -91,3 +96,17 @@ pub fn rand_new(seed: u32) -> Rand { } return r; } + +#attribute("test") +fn test_float32() { + var r = rand_new(42); + + // TODO for loop with range + var i: i32 = 0; + while (i < 1000) { + const val = r.float32(); + if (!(val >= 0.0)) unreachable{}; + if (!(val < 1.0)) unreachable{}; + i += 1; + } +}