| ... | ... | @@ -81,7 +81,7 @@ struct Rand { |
| 81 | 81 | // does not populate the remaining (buf.len % 4) bytes |
| 82 | 82 | fn get_bytes_aligned(r: &Rand, buf: []u8) -> usize { |
| 83 | 83 | var bytes_left = buf.len; |
| 84 | | while (bytes_left > 4) { |
| 84 | while (bytes_left >= 4) { |
| 85 | 85 | // TODO: array access so we can remove .ptr |
| 86 | 86 | *(&buf.ptr[buf.len - bytes_left] as &u32) = r.get_u32(); |
| 87 | 87 | bytes_left -= #sizeof(u32); |
| ... | ... | @@ -104,10 +104,17 @@ pub fn rand_init(r: &Rand, seed: u32) { |
| 104 | 104 | |
| 105 | 105 | pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { |
| 106 | 106 | var rand : Rand; |
| 107 | | rand_init(&rand, 13); |
| 108 | | const answer = rand.range_u64(0, 100) + 1; |
| 109 | | print_str("random number: "); |
| 110 | | print_u64(answer); |
| 111 | | print_str("\n"); |
| 107 | var i : u8 = 0; |
| 108 | while (i < 20) { |
| 109 | rand_init(&rand, i); |
| 110 | var j : u8 = 0; |
| 111 | while (j < 20) { |
| 112 | print_u64(rand.range_u64(0, 100) + 1); |
| 113 | print_str(" "); |
| 114 | j += 1; |
| 115 | } |
| 116 | print_str("\n"); |
| 117 | i += 1; |
| 118 | } |
| 112 | 119 | return 0; |
| 113 | 120 | } |