aboutsummaryrefslogtreecommitdiff
path: root/test/rng.tm
blob: 1814d58370e560efb5305afd9c0728708be12b44 (plain)
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
# Random Number Generator tests

func main():
    !! Default RNG:
    >> random:int64()

    >> original_rng := RNG.new([:Byte])
    >> copy := original_rng:copy()

    for rng in [original_rng, copy]:
        !! RNG: $rng
        >> rng:int(1, 1000)
        = 921
        >> rng:int64(1, 1000)
        = Int64(324)
        >> rng:int32(1, 1000)
        = Int32(586)
        >> rng:int16(1, 1000)
        = Int16(453)
        >> rng:int8(1, 100)
        = Int8(53)
        >> rng:byte()
        = Byte(0xDC)
        >> rng:bytes(10)
        = [:Byte, 0xA0, 0x5A, 0x10, 0x3F, 0x6C, 0xD1, 0x35, 0xC2, 0x87, 0x8C]
        >> rng:bool(p=0.8)
        = yes
        >> rng:num()
        = 0.03492503353647658
        >> rng:num32(1, 1000)
        = Num32(761.05908)

        !! Random array methods:
        >> nums := [10*i for i in 10]
        >> nums:shuffled(rng=rng)
        = [30, 50, 100, 20, 90, 10, 80, 40, 70, 60]
        >> nums:random(rng=rng)
        = 70
        >> nums:sample(10, weights=[1.0/Num(i) for i in nums.length], rng=rng)
        = [10, 20, 10, 10, 30, 70, 10, 40, 60, 80]