blob: c7c6a3f5693794dd8522ffca6861e7673918aeed (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
discard """
action: compile
"""
import random
proc main =
var occur: array[1000, int]
var x = 8234
for i in 0..100_000:
x = rand(high(occur))
inc occur[x]
for i, oc in occur:
if oc < 69:
doAssert false, "too few occurrences of " & $i
elif oc > 150:
doAssert false, "too many occurrences of " & $i
when false:
var rs: RunningStat
for j in 1..5:
for i in 1 .. 1_000:
rs.push(gauss())
echo("mean: ", rs.mean,
" stdDev: ", rs.standardDeviation(),
" min: ", rs.min,
" max: ", rs.max)
rs.clear()
var a = [0, 1]
shuffle(a)
doAssert a[0] == 1
doAssert a[1] == 0
doAssert rand(0) == 0
doAssert sample("a") == 'a'
when compileOption("rangeChecks"):
try:
discard rand(-1)
doAssert false
except RangeDefect:
discard
try:
discard rand(-1.0)
doAssert false
except RangeDefect:
discard
# don't use causes integer overflow
doAssert compiles(rand[int](low(int) .. high(int)))
randomize(223)
for i in 0 .. 10:
main()
|