~/bend-docscommunity

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

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