docs / stdlib / math / random

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

Generator

cajeta.math.random.Generator — the random-number surface, built on a counter-based BitGenerator (Philox4x32-10). Counter-based means each output is a stateless function philox(counter, key) of its index and the seed: the stream is reproducible, and element i can be computed independently of all others — embarrassingly parallel, identical on CPU and GPU (the reason for choosing Philox over a sequential generator like PCG64). A Generator holds the 64-bit key (the seed).

package snip.rng;

import cajeta.math.Tensor;
import cajeta.math.random.Generator;

public final class Demo {
    public static void run() {
        Generator g = heap Generator(42);
        Tensor<float32> u #= g.uniform(1000);       // [0, 1)
        Tensor<float32> z #= g.normal(1000);        // N(0, 1)
        Tensor<int64> d #= g.integers(1, 7, 10);    // ten rolls of a die
        return;
    }
}

Methods

Signature
Generator(uint64 seed) ⚑Build a generator keyed by seed; the same seed reproduces the same stream
#Tensor<float32> uniform(int64 n) ⚑n samples from the uniform distribution over [0, 1): element i is the top 24 bits of philox(i, key)[0] scaled to [0, 1)
#Tensor<float32> normal(int64 n)n samples from the standard normal N(0, 1) via the Box-Muller transform over counters 2i and 2i+1
#Tensor<int64> integers(int64 low, int64 high, int64 n)n uniform integers in [low, high): element i is low + (philox(i) mod (high-low))

⚑ = @EntryPoint

See also

Source: docs/stdlib/math/random/Generator.md · 1 min read · 195 words