aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-11-03 22:37:48 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-11-03 22:37:48 -0500
commitfc9a6f1416be514e9d26b301d05e7e347560560b (patch)
tree7d61cc3657c36dde05135f17dbf5923cff177abf /test
parent52e3d3fe6f2c3e5051affe155fed364d1a5d623c (diff)
Add RNGs to the language
Diffstat (limited to 'test')
-rw-r--r--test/rng.tm40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/rng.tm b/test/rng.tm
new file mode 100644
index 00000000..3285cd0f
--- /dev/null
+++ b/test/rng.tm
@@ -0,0 +1,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)
+ = 324[64]
+ >> rng:int32(1, 1000)
+ = 586[32]
+ >> rng:int16(1, 1000)
+ = 453[16]
+ >> rng:int8(1, 100)
+ = 53[8]
+ >> rng:byte()
+ = 220[B]
+ >> rng:bytes(10)
+ = [160[B], 90[B], 16[B], 63[B], 108[B], 209[B], 53[B], 194[B], 135[B], 140[B]]
+ >> rng:bool(p=0.8)
+ = yes
+ >> rng:num()
+ = 0.03492503353647658
+ >> rng:num32(1, 1000)
+ = 761.05908_f32
+
+ !! 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/i for i in nums.length], rng=rng)
+ = [10, 20, 10, 10, 30, 70, 10, 40, 60, 80]