lib.bend checks
raw source on the hub · import 0xfd7037736e4fa1794a671d0278638da7/lib.bend as Lib
Prng — tiny seeded xorshift32 for Bend 2.0.2.
Base only; no termination escapes. State is a single U32. Seed 0 aliases seed 1 because raw xorshift32 is stuck at the zero fixed point.
next returns (value, new_prng) where value equals the new state. next_bounded uses U32.mod; max 0 yields value 0 while still advancing. next_f32 maps the top 24 bits into [0, 1) via U32.to_f32 (opaque to ==).
1 import
import Base
Types
type Prng source · line 11 · raw
Data
Prng@state:U32 -> Prng
Definitions
def Prng.seed source · line 14 · raw
@+s:U32 -> Prng
def Prng.step source · line 17 · raw
@+x:U32 -> U32
def Prng.next source · line 22 · raw
@p:Prng -> Pair(U32, Prng)
def Prng.next_value.go source · line 28 · raw
@r:Pair(U32, Prng) -> U32
def Prng.next_value source · line 32 · raw
@p:Prng -> U32
def Prng.next_state.go source · line 35 · raw
@r:Pair(U32, Prng) -> Prng
def Prng.next_state source · line 39 · raw
@p:Prng -> Prng
def Prng.next_bounded.go source · line 43 · raw
@+max:U32 -> @r:Pair(U32, Prng) -> Pair(U32, Prng)
When max is 0, return 0 (documented); state still advances.
def Prng.next_bounded source · line 47 · raw
@p:Prng -> @+max:U32 -> Pair(U32, Prng)
def Prng.next_bounded_value.go source · line 50 · raw
@r:Pair(U32, Prng) -> U32
def Prng.next_bounded_value source · line 54 · raw
@p:Prng -> @+max:U32 -> U32
def Prng.next_f32.go source · line 58 · raw
@r:Pair(U32, Prng) -> Pair(F32, Prng)
Unit interval via top 24 bits / 2^24. F32 ops are opaque to ==.
def Prng.next_f32 source · line 62 · raw
@p:Prng -> Pair(F32, Prng)
def Prng.state source · line 65 · raw
@p:Prng -> U32