The seeded random numbers lived in the ECS runtime, so a tool or a program of test blocks got "unknown function rng_range". They are runtime/native/rng.ludic now, spliced on Random.* or a bare rng_*/seed call nobody defines, and imported by core.ludic for a game. A bare value_*/json_* call nothing in the program defines splices the value tree the way Value.* does. Reseed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 lines
528 B
Text
19 lines
528 B
Text
# random_plain.ludic — Random.* in a program with no properties or handlers: the seeded random
|
|
# numbers are spliced on their own, and a helper may call rng_range directly. The same seed gives
|
|
# the same draws.
|
|
#
|
|
# Running it prints: 1 1 1
|
|
program RandomPlain {
|
|
function roll() -> int {
|
|
return rng_range(1, 6)
|
|
}
|
|
entry {
|
|
Random.seed(7)
|
|
let a = Random.range(1, 6)
|
|
let b = roll()
|
|
Random.seed(7)
|
|
let c = Random.range(1, 6)
|
|
let d = roll()
|
|
print(`{a == c} {b == d} {a >= 1 and a <= 6}`)
|
|
}
|
|
}
|