1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

rand: change rand.seed() to receive seed value

This commit is contained in:
d2verb
2019-07-14 01:17:45 +09:00
committed by Alexander Medvednikov
parent af7d49103b
commit 2cb12b4f4e
5 changed files with 41 additions and 12 deletions

View File

@@ -4,10 +4,8 @@
module rand
import time
pub fn seed() {
C.srand(time.now().uni)
pub fn seed(s int) {
C.srand(s)
}
pub fn next(max int) int {
@@ -15,4 +13,3 @@ pub fn next(max int) int {
}
fn C.rand() int

30
vlib/rand/rand_test.v Normal file
View File

@@ -0,0 +1,30 @@
import rand
fn gen_randoms(seed int) []int {
mut randoms := [0; 20]
rand.seed(seed)
for i in 0..20 {
randoms[i] = rand.next(100)
}
return randoms
}
fn test_rand_reproducibility() {
mut randoms1 := gen_randoms(42)
mut randoms2 := gen_randoms(42)
assert randoms1.len == randoms2.len
mut len := randoms1.len
for i in 0..len {
assert randoms1[i] == randoms2[i]
}
randoms1 = gen_randoms(256)
randoms2 = gen_randoms(256)
assert randoms1.len == randoms2.len
len = randoms1.len
for i in 0..len {
assert randoms1[i] == randoms2[i]
}
}