aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-04-07 10:34:54 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-04-07 10:34:54 -0700
commit1d4c66b56beb7b2da6bafbab6871691641c8da0b (patch)
tree9277fdf3c2b20afe5658dd7915f592a9cca5621e /std
parent57688dea36e6d1f8d7bad255898d1e222b3a6fbc (diff)
downloadzig-1d4c66b56beb7b2da6bafbab6871691641c8da0b.tar.gz
zig-1d4c66b56beb7b2da6bafbab6871691641c8da0b.zip
support multiple generic function instances
See #22
Diffstat (limited to 'std')
-rw-r--r--std/rand.zig31
1 files changed, 16 insertions, 15 deletions
diff --git a/std/rand.zig b/std/rand.zig
index 5d2d547652..9dee46fbe5 100644
--- a/std/rand.zig
+++ b/std/rand.zig
@@ -1,11 +1,26 @@
// Mersenne Twister
const ARRAY_SIZE = 624;
-/// Use `rand_init` to initialize this state.
+/// Use `init` to initialize this state.
pub struct Rand {
array: [ARRAY_SIZE]u32,
index: isize,
+ /// Initialize random state with the given seed.
+ pub fn init(seed: u32) -> Rand {
+ var r: Rand = undefined;
+ r.index = 0;
+ r.array[0] = seed;
+ var i : isize = 1;
+ var prev_value: u64 = seed;
+ while (i < ARRAY_SIZE) {
+ r.array[i] = u32((prev_value ^ (prev_value << 30)) * 0x6c078965 + u32(i));
+ prev_value = r.array[i];
+ i += 1;
+ }
+ return r;
+ }
+
/// Get 32 bits of randomness.
pub fn get_u32(r: &Rand) -> u32 {
if (r.index == 0) {
@@ -85,20 +100,6 @@ pub struct Rand {
return bytes_left;
}
- /// Initialize random state with the given seed.
- pub fn init(seed: u32) -> Rand {
- var r: Rand = undefined;
- r.index = 0;
- r.array[0] = seed;
- var i : isize = 1;
- var prev_value: u64 = seed;
- while (i < ARRAY_SIZE) {
- r.array[i] = u32((prev_value ^ (prev_value << 30)) * 0x6c078965 + u32(i));
- prev_value = r.array[i];
- i += 1;
- }
- return r;
- }
}
#attribute("test")