21
Random
Distributions
Sampling
Random Sampling & Distributions
Random number generation is essential for weight initialization, data augmentation, Monte Carlo simulation, and stochastic algorithms. This example demonstrates all Deepbox random functions: setSeed, rand, randn, uniform, normal, binomial, poisson, exponential, gamma, beta, randint, choice, shuffle, and permutation.
Deepbox Modules Used
deepbox/randomWhat You Will Learn
- setSeed(42) makes all subsequent random calls deterministic
- rand/randn are shortcuts for uniform [0,1) and standard normal
- Use binomial/poisson/exponential/gamma/beta for specialized distributions
- choice samples from a tensor; permutation returns a shuffled copy
- clearSeed returns to non-deterministic mode
Source Code
21-random-sampling/index.ts
1import {2 beta,3 binomial,4 exponential,5 gamma,6 normal,7 poisson,8 rand,9 randint,10 randn,11 setSeed,12 uniform,13} from "deepbox/random";1415console.log("=== Random Sampling & Distributions ===\n");1617// Set seed for reproducibility18setSeed(42);19console.log("Random seed set to 42 for reproducibility\n");2021// Uniform distribution [0, 1)22console.log("1. Uniform Distribution [0, 1):");23const uniformSamples = rand([5]);24console.log(`${uniformSamples.toString()}\n`);2526// Standard normal distribution27console.log("2. Standard Normal Distribution (mean=0, std=1):");28const normalSamples = randn([5]);29console.log(`${normalSamples.toString()}\n`);3031// Random integers32console.log("3. Random Integers [0, 10):");33const intSamples = randint(0, 10, [8]);34console.log(`${intSamples.toString()}\n`);3536// Custom uniform distribution37console.log("4. Uniform Distribution [-5, 5]:");38const customUniform = uniform(-5, 5, [6]);39console.log(`${customUniform.toString()}\n`);4041// Custom normal distribution42console.log("5. Normal Distribution (mean=100, std=15):");43const customNormal = normal(100, 15, [6]);44console.log(`${customNormal.toString()}\n`);4546// Binomial distribution (coin flips)47console.log("6. Binomial Distribution (n=10, p=0.5):");48const binomialSamples = binomial(10, 0.5, [8]);49console.log(binomialSamples.toString());50console.log("(Number of heads in 10 coin flips)\n");5152// Poisson distribution53console.log("7. Poisson Distribution (λ=3):");54const poissonSamples = poisson(3, [8]);55console.log(poissonSamples.toString());56console.log("(Number of events with rate λ=3)\n");5758// Exponential distribution59console.log("8. Exponential Distribution (scale=2):");60const expSamples = exponential(2, [6]);61console.log(expSamples.toString());62console.log("(Time between events)\n");6364// Gamma distribution65console.log("9. Gamma Distribution (shape=2, scale=2):");66const gammaSamples = gamma(2, 2, [6]);67console.log(`${gammaSamples.toString()}\n`);6869// Beta distribution70console.log("10. Beta Distribution (α=2, β=5):");71const betaSamples = beta(2, 5, [6]);72console.log(betaSamples.toString());73console.log("(Values between 0 and 1)\n");7475console.log("✓ Random sampling complete!");Console Output
$ npx tsx 21-random-sampling/index.ts
=== Random Sampling & Distributions ===
Random seed set to 42 for reproducibility
1. Uniform Distribution [0, 1):
tensor([0.7786, 0.9902, 0.2673, 0.3684, 0.03315], dtype=float32)
2. Standard Normal Distribution (mean=0, std=1):
tensor([-0.1422, -0.4020, -0.4828, -0.2822, -2.556], dtype=float32)
3. Random Integers [0, 10):
tensor([4, 2, 2, ..., 6, 0, 7], dtype=int32)
4. Uniform Distribution [-5, 5]:
tensor([1.948, 2.281, -2.408, -2.970, 2.537, 0.06305], dtype=float32)
5. Normal Distribution (mean=100, std=15):
tensor([92.14, 78.70, 102.1, 99.70, 95.03, 111.2], dtype=float32)
6. Binomial Distribution (n=10, p=0.5):
tensor([6, 5, 3, ..., 5, 1, 6], dtype=int32)
(Number of heads in 10 coin flips)
7. Poisson Distribution (λ=3):
tensor([3, 5, 9, ..., 5, 6, 2], dtype=int32)
(Number of events with rate λ=3)
8. Exponential Distribution (scale=2):
tensor([0.6587, 4.888, 1.342, 0.7649, 2.543, 1.637], dtype=float32)
(Time between events)
9. Gamma Distribution (shape=2, scale=2):
tensor([3.776, 10.24, 2.840, 6.351, 1.614, 0.9918], dtype=float32)
10. Beta Distribution (α=2, β=5):
tensor([0.2361, 0.1764, 0.3668, 0.2450, 0.3247, 0.1644], dtype=float32)
(Values between 0 and 1)
✓ Random sampling complete!