import rand
import time

fn show_u64s(a []u64){
   mut res := []string{}
   for x in a {
	  res << x.str()
   }
   print('[')
   print(res.join(', '))
   println(']')
}

fn gen_randoms(seed i64, bound int) []u64 {
	mut randoms := [u64(0)].repeat(20)
	mut rnd := rand.new_splitmix64( u64(seed) )
	for i in 0..20 {
		randoms[i] = rnd.bounded_next(u64(bound))
	}
	return randoms
}

fn test_splitmix64_reproducibility() {
	t := time.ticks()
	println('t: $t')
	randoms1 := gen_randoms(t, 1000)
	randoms2 := gen_randoms(t, 1000)
	assert randoms1.len == randoms2.len
	show_u64s( randoms1 )
	show_u64s( randoms2 )
	len := randoms1.len
	for i in 0..len {
		assert randoms1[i] == randoms2[i]
	}
}