{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "230760979d82fbcd",
   "metadata": {},
   "source": [
    "# Random Number Generation\n",
    "\n",
    "Random number generation is fundamental to machine learning and computational neuroscience. **BrainState** provides a comprehensive random number generation system built on JAX that combines:\n",
    "\n",
    "- 🎲 **NumPy-like API**: Familiar interface for easy adoption\n",
    "- 🔐 **Reproducibility**: Deterministic pseudorandom sequences\n",
    "- ⚡ **High Performance**: JIT-compiled random functions\n",
    "- 🔄 **Stateful Management**: Automatic key splitting and state handling\n",
    "\n",
    "By the end of this tutorial, you will understand:\n",
    "\n",
    "- How to generate random numbers with BrainState\n",
    "- The `RandomState` class and seed management\n",
    "- Available probability distributions\n",
    "- Random sampling and shuffling operations\n",
    "- Best practices for reproducible experiments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7724835268dc9f6",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.034881Z",
     "start_time": "2025-10-10T10:05:04.842551Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:05.649771Z",
     "iopub.status.busy": "2026-05-30T16:21:05.649565Z",
     "iopub.status.idle": "2026-05-30T16:21:07.780048Z",
     "shell.execute_reply": "2026-05-30T16:21:07.779003Z"
    }
   },
   "outputs": [],
   "source": [
    "import brainstate\n",
    "import numpy as np\n",
    "import jax.numpy as jnp\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "why_random",
   "metadata": {},
   "source": [
    "## Why BrainState Random?\n",
    "\n",
    "### JAX's Challenge\n",
    "\n",
    "JAX uses **explicit random keys** for reproducibility and parallelization:\n",
    "\n",
    "```python\n",
    "# JAX approach - manual key management\n",
    "key = jax.random.PRNGKey(0)\n",
    "key, subkey = jax.random.split(key)  # Must split manually\n",
    "x = jax.random.normal(subkey, (100,))\n",
    "```\n",
    "\n",
    "This is powerful but verbose. **BrainState** simplifies this:\n",
    "\n",
    "```python\n",
    "# BrainState approach - automatic key management\n",
    "brainstate.random.seed(0)\n",
    "x = brainstate.random.normal(0, 1, (100,))  # Keys handled automatically\n",
    "```\n",
    "\n",
    "### Key Features\n",
    "\n",
    "✅ **Automatic key splitting**: No manual key management  \n",
    "✅ **NumPy compatibility**: Drop-in replacement for `numpy.random`  \n",
    "✅ **Stateful interface**: Natural imperative programming style  \n",
    "✅ **JIT compatible**: Full performance with JAX transformations  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff4331f95839e85e",
   "metadata": {},
   "source": [
    "## API Overview\n",
    "\n",
    "The `brainstate.random` module provides a wide range of functions for random number generation and sampling from probability distributions.\n",
    "\n",
    "| Category | API Functions |\n",
    "|----------|---------------|\n",
    "| **Random Sampling** | `rand`, `randn`, `randint`, `random`, `choice` |\n",
    "| **Continuous Distributions** | `normal`, `uniform`, `beta`, `gamma`, `exponential`, `gumbel`, `laplace`, `logistic` |\n",
    "| **Discrete Distributions** | `binomial`, `poisson`, `bernoulli`, `categorical` |\n",
    "| **Shuffling** | `shuffle`, `permutation` |\n",
    "| **Seed Management** | `seed`, `get_key`, `set_key`, `split_key` |\n",
    "| **State Management** | `RandomState`, `DEFAULT` |\n",
    "\n",
    "### The DEFAULT RandomState\n",
    "\n",
    "All random functions in `brainstate.random` use a global `DEFAULT` instance of `RandomState`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6a3746e719381c04",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.044513Z",
     "start_time": "2025-10-10T10:05:07.039504Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:07.782428Z",
     "iopub.status.busy": "2026-05-30T16:21:07.781984Z",
     "iopub.status.idle": "2026-05-30T16:21:07.813147Z",
     "shell.execute_reply": "2026-05-30T16:21:07.812232Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Default RandomState:\n",
      "RandomState(Array((), dtype=key<fry>) overlaying:\n",
      "[2325272776 1178154024])\n",
      "\n",
      "Type: <class 'brainstate.random.RandomState'>\n"
     ]
    }
   ],
   "source": [
    "# The DEFAULT random state\n",
    "print(\"Default RandomState:\")\n",
    "print(brainstate.random.DEFAULT)\n",
    "print(f\"\\nType: {type(brainstate.random.DEFAULT)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "seed_management",
   "metadata": {},
   "source": [
    "## Seed Management and Reproducibility\n",
    "\n",
    "### Setting Seeds\n",
    "\n",
    "For reproducible experiments, always set a seed at the beginning:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5480509c4a1c58b1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.373445Z",
     "start_time": "2025-10-10T10:05:07.045892Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:07.814844Z",
     "iopub.status.busy": "2026-05-30T16:21:07.814706Z",
     "iopub.status.idle": "2026-05-30T16:21:08.136077Z",
     "shell.execute_reply": "2026-05-30T16:21:08.135319Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Seed set to 42\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "First sequence: [0.72766423 0.78786755 0.18169427 0.26263022 0.11072934]\n",
      "Second sequence: [0.72766423 0.78786755 0.18169427 0.26263022 0.11072934]\n",
      "\n",
      "Identical? True\n"
     ]
    }
   ],
   "source": [
    "# Set seed for reproducibility\n",
    "brainstate.random.seed(42)\n",
    "print(\"Seed set to 42\")\n",
    "\n",
    "# Generate some numbers\n",
    "x1 = brainstate.random.rand(5)\n",
    "print(f\"First sequence: {x1}\")\n",
    "\n",
    "# Reset to same seed\n",
    "brainstate.random.seed(42)\n",
    "x2 = brainstate.random.rand(5)\n",
    "print(f\"Second sequence: {x2}\")\n",
    "print(f\"\\nIdentical? {jnp.allclose(x1, x2)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "key_management",
   "metadata": {},
   "source": [
    "### Advanced: Key Management\n",
    "\n",
    "For advanced use cases, you can directly access and manipulate keys:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "27dc45c891e1bb31",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.515452Z",
     "start_time": "2025-10-10T10:05:07.377286Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.137750Z",
     "iopub.status.busy": "2026-05-30T16:21:08.137495Z",
     "iopub.status.idle": "2026-05-30T16:21:08.311331Z",
     "shell.execute_reply": "2026-05-30T16:21:08.310155Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Current key: Array((), dtype=key<fry>) overlaying:\n",
      "[1832780943  270669613]\n",
      "\n",
      "Split into 4 keys:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  Key 0: Array((), dtype=key<fry>) overlaying:\n",
      "[1705926158  899080142]\n",
      "  Key 1: Array((), dtype=key<fry>) overlaying:\n",
      "[4095997477  317277840]\n",
      "  Key 2: Array((), dtype=key<fry>) overlaying:\n",
      "[1820970612 3729538270]\n",
      "  Key 3: Array((), dtype=key<fry>) overlaying:\n",
      "[3985668294 1940518238]\n"
     ]
    }
   ],
   "source": [
    "# Get current key\n",
    "current_key = brainstate.random.get_key()\n",
    "print(f\"Current key: {current_key}\")\n",
    "\n",
    "# Split key for parallel operations\n",
    "keys = brainstate.random.split_key(n=4)\n",
    "print(f\"\\nSplit into {len(keys)} keys:\")\n",
    "for i, key in enumerate(keys):\n",
    "    print(f\"  Key {i}: {key}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "df9f1b1a891a8113",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.692298Z",
     "start_time": "2025-10-10T10:05:07.554441Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.313677Z",
     "iopub.status.busy": "2026-05-30T16:21:08.313402Z",
     "iopub.status.idle": "2026-05-30T16:21:08.461298Z",
     "shell.execute_reply": "2026-05-30T16:21:08.460460Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "v1: [-0.39489815 -0.42596528 -1.0719717 ]\n",
      "v2: [ 0.6733885  -0.50893074 -0.28400496]\n",
      "v3 (restored): [-0.39489815 -0.42596528 -1.0719717 ]\n",
      "\n",
      "v1 == v3? True\n"
     ]
    }
   ],
   "source": [
    "# Save and restore state\n",
    "saved_key = brainstate.random.get_key()\n",
    "v1 = brainstate.random.randn(3)\n",
    "\n",
    "# Generate more numbers\n",
    "v2 = brainstate.random.randn(3)\n",
    "\n",
    "# Restore state\n",
    "brainstate.random.set_key(saved_key)\n",
    "v3 = brainstate.random.randn(3)\n",
    "\n",
    "print(f\"v1: {v1}\")\n",
    "print(f\"v2: {v2}\")\n",
    "print(f\"v3 (restored): {v3}\")\n",
    "print(f\"\\nv1 == v3? {jnp.allclose(v1, v3)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4a13411b1c9cfa2",
   "metadata": {},
   "source": [
    "## Random Sampling\n",
    "\n",
    "### Basic Sampling Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3bdf5c4c909f4e3e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.703526Z",
     "start_time": "2025-10-10T10:05:07.697100Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.463666Z",
     "iopub.status.busy": "2026-05-30T16:21:08.463386Z",
     "iopub.status.idle": "2026-05-30T16:21:08.468744Z",
     "shell.execute_reply": "2026-05-30T16:21:08.468001Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Uniform [0,1) samples: [0.72766423 0.78786755 0.18169427 0.26263022 0.11072934]\n"
     ]
    }
   ],
   "source": [
    "# Uniform [0, 1)\n",
    "brainstate.random.seed(42)\n",
    "uniform_samples = brainstate.random.rand(5)\n",
    "print(\"Uniform [0,1) samples:\", uniform_samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "938ca61e0dc053ce",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.822287Z",
     "start_time": "2025-10-10T10:05:07.726946Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.470361Z",
     "iopub.status.busy": "2026-05-30T16:21:08.470181Z",
     "iopub.status.idle": "2026-05-30T16:21:08.573909Z",
     "shell.execute_reply": "2026-05-30T16:21:08.572886Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Standard normal samples: [-0.21089035 -1.3627948  -0.04500385 -1.1536394   1.9141139 ]\n"
     ]
    }
   ],
   "source": [
    "# Standard normal (mean=0, std=1)\n",
    "normal_samples = brainstate.random.randn(5)\n",
    "print(\"Standard normal samples:\", normal_samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "93592d115567567a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:07.965019Z",
     "start_time": "2025-10-10T10:05:07.827297Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.576236Z",
     "iopub.status.busy": "2026-05-30T16:21:08.576045Z",
     "iopub.status.idle": "2026-05-30T16:21:08.715234Z",
     "shell.execute_reply": "2026-05-30T16:21:08.714358Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random integers [0,10): [0 2 0 0 8]\n"
     ]
    }
   ],
   "source": [
    "# Random integers\n",
    "int_samples = brainstate.random.randint(0, 10, size=5)\n",
    "print(\"Random integers [0,10):\", int_samples)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sampling_ops",
   "metadata": {},
   "source": [
    "### Choice and Permutation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "589aa4e95bf0ab87",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:08.120406Z",
     "start_time": "2025-10-10T10:05:07.982011Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.717776Z",
     "iopub.status.busy": "2026-05-30T16:21:08.717616Z",
     "iopub.status.idle": "2026-05-30T16:21:08.866860Z",
     "shell.execute_reply": "2026-05-30T16:21:08.866086Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random choices from [10 20 30 40 50]:\n",
      "[40 50 20]\n"
     ]
    }
   ],
   "source": [
    "# Random choice from array\n",
    "options = jnp.array([10, 20, 30, 40, 50])\n",
    "choices = brainstate.random.choice(options, size=3, replace=False)\n",
    "print(f\"Random choices from {options}:\")\n",
    "print(choices)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a1b5ceb209d46dfe",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:08.268654Z",
     "start_time": "2025-10-10T10:05:08.140985Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:08.868253Z",
     "iopub.status.busy": "2026-05-30T16:21:08.868102Z",
     "iopub.status.idle": "2026-05-30T16:21:09.013023Z",
     "shell.execute_reply": "2026-05-30T16:21:09.012154Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original: [0 1 2 3 4 5 6 7 8 9]\n",
      "Shuffled: [7 4 8 2 5 6 3 0 1 9]\n"
     ]
    }
   ],
   "source": [
    "# Shuffle array\n",
    "array = jnp.arange(10)\n",
    "shuffled = brainstate.random.shuffle(array)\n",
    "print(f\"Original: {array}\")\n",
    "print(f\"Shuffled: {shuffled}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "permutation_example",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:08.280850Z",
     "start_time": "2025-10-10T10:05:08.274766Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:09.015627Z",
     "iopub.status.busy": "2026-05-30T16:21:09.015381Z",
     "iopub.status.idle": "2026-05-30T16:21:09.021111Z",
     "shell.execute_reply": "2026-05-30T16:21:09.020206Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random permutation of 0-9: [2 6 9 7 4 3 1 0 5 8]\n"
     ]
    }
   ],
   "source": [
    "# Random permutation\n",
    "perm = brainstate.random.permutation(10)\n",
    "print(f\"Random permutation of 0-9: {perm}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f574683a3cf8bd24",
   "metadata": {},
   "source": [
    "## Probability Distributions\n",
    "\n",
    "### Continuous Distributions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2a4016c97e9ec69f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:08.636784Z",
     "start_time": "2025-10-10T10:05:08.293170Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:09.022905Z",
     "iopub.status.busy": "2026-05-30T16:21:09.022744Z",
     "iopub.status.idle": "2026-05-30T16:21:09.285216Z",
     "shell.execute_reply": "2026-05-30T16:21:09.284342Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Normal(μ=5, σ=2):\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  Mean: 4.941 (expected: 5.0)\n",
      "  Std:  2.099 (expected: 2.0)\n"
     ]
    }
   ],
   "source": [
    "# Normal distribution\n",
    "brainstate.random.seed(0)\n",
    "normal_samples = brainstate.random.normal(loc=5.0, scale=2.0, size=1000)\n",
    "print(f\"Normal(μ=5, σ=2):\")\n",
    "print(f\"  Mean: {jnp.mean(normal_samples):.3f} (expected: 5.0)\")\n",
    "print(f\"  Std:  {jnp.std(normal_samples):.3f} (expected: 2.0)\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "ad42cfc68efeb896",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:08.778700Z",
     "start_time": "2025-10-10T10:05:08.638503Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:09.287820Z",
     "iopub.status.busy": "2026-05-30T16:21:09.287552Z",
     "iopub.status.idle": "2026-05-30T16:21:09.475422Z",
     "shell.execute_reply": "2026-05-30T16:21:09.474648Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Uniform[0, 10):\n",
      "  Mean: 5.071 (expected: 5.0)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  Min:  0.012\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  Max:  9.953\n"
     ]
    }
   ],
   "source": [
    "# Uniform distribution\n",
    "uniform_samples = brainstate.random.uniform(low=0, high=10, size=1000)\n",
    "print(f\"\\nUniform[0, 10):\")\n",
    "print(f\"  Mean: {jnp.mean(uniform_samples):.3f} (expected: 5.0)\")\n",
    "print(f\"  Min:  {jnp.min(uniform_samples):.3f}\")\n",
    "print(f\"  Max:  {jnp.max(uniform_samples):.3f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "more_distributions",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:09.503643Z",
     "start_time": "2025-10-10T10:05:08.783136Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:09.477039Z",
     "iopub.status.busy": "2026-05-30T16:21:09.476882Z",
     "iopub.status.idle": "2026-05-30T16:21:10.208110Z",
     "shell.execute_reply": "2026-05-30T16:21:10.207273Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Exponential(λ=0.5):\n",
      "  Mean: 2.021 (expected: 2.0)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Beta(α=2, β=5):\n",
      "  Mean: 0.292 (expected: 0.286)\n"
     ]
    }
   ],
   "source": [
    "# Exponential distribution\n",
    "exp_samples = brainstate.random.exponential(scale=2.0, size=1000)\n",
    "print(f\"\\nExponential(λ=0.5):\")\n",
    "print(f\"  Mean: {jnp.mean(exp_samples):.3f} (expected: 2.0)\")\n",
    "\n",
    "# Beta distribution\n",
    "beta_samples = brainstate.random.beta(a=2.0, b=5.0, size=1000)\n",
    "print(f\"\\nBeta(α=2, β=5):\")\n",
    "print(f\"  Mean: {jnp.mean(beta_samples):.3f} (expected: {2/(2+5):.3f})\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "discrete_dists",
   "metadata": {},
   "source": [
    "### Discrete Distributions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "22e71b4dd19744a2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:10.072089Z",
     "start_time": "2025-10-10T10:05:09.521978Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:10.210460Z",
     "iopub.status.busy": "2026-05-30T16:21:10.210155Z",
     "iopub.status.idle": "2026-05-30T16:21:10.776940Z",
     "shell.execute_reply": "2026-05-30T16:21:10.776134Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Binomial(n=10, p=0.5):\n",
      "  Mean: 5.024 (expected: 5.0)\n",
      "  Std:  1.588 (expected: 1.581)\n"
     ]
    }
   ],
   "source": [
    "# Binomial distribution\n",
    "binomial_samples = brainstate.random.binomial(n=10, p=0.5, size=1000)\n",
    "print(f\"Binomial(n=10, p=0.5):\")\n",
    "print(f\"  Mean: {jnp.mean(binomial_samples):.3f} (expected: 5.0)\")\n",
    "print(f\"  Std:  {jnp.std(binomial_samples):.3f} (expected: {jnp.sqrt(10*0.5*0.5):.3f})\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "df476ddc47d413a9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:10.424088Z",
     "start_time": "2025-10-10T10:05:10.086874Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:10.778930Z",
     "iopub.status.busy": "2026-05-30T16:21:10.778762Z",
     "iopub.status.idle": "2026-05-30T16:21:11.176293Z",
     "shell.execute_reply": "2026-05-30T16:21:11.175216Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Poisson(λ=3):\n",
      "  Mean: 2.979 (expected: 3.0)\n",
      "  Var:  2.949 (expected: 3.0)\n"
     ]
    }
   ],
   "source": [
    "# Poisson distribution\n",
    "poisson_samples = brainstate.random.poisson(lam=3.0, size=1000)\n",
    "print(f\"\\nPoisson(λ=3):\")\n",
    "print(f\"  Mean: {jnp.mean(poisson_samples):.3f} (expected: 3.0)\")\n",
    "print(f\"  Var:  {jnp.var(poisson_samples):.3f} (expected: 3.0)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "visualization",
   "metadata": {},
   "source": [
    "### Visualizing Distributions\n",
    "\n",
    "Let's visualize several distributions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "viz_distributions",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:12.705426Z",
     "start_time": "2025-10-10T10:05:10.439396Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:11.179307Z",
     "iopub.status.busy": "2026-05-30T16:21:11.179134Z",
     "iopub.status.idle": "2026-05-30T16:21:11.179403Z",
     "shell.execute_reply": "2026-05-30T16:21:11.178445Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdIAAAPeCAYAAAAI5OjmAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xl8VNX9//H3TUImJGQgMZMEMAKKCloFCxIQrVrRuHypilZcKpgqtlpabb7+qnEB4hZXGmspqUtA64a7bfELbaNptabSoriDAmEiS8IAkpkEmCxzf3+kGTPMkm0mk0lez8cjD5h77rn3c05mcmY+c+85hmmapgAAAAAAAAAAQEBx0Q4AAAAAAAAAAIC+jEQ6AAAAAAAAAAAhkEgHAAAAAAAAACAEEukAAAAAAAAAAIRAIh0AAAAAAAAAgBBIpAMAAAAAAAAAEAKJdAAAAAAAAAAAQiCRDgAAAAAAAABACCTSAQAAAAAAAAAIgUQ6MEAtWrRIhmHIMAwtX77cr/y8886TYRg688wzez+4AcputyshIUGGYeill16KdjgAgAhbvny5dyxetGiRT9lXX32lH/zgB8rMzPTu8/rrr0clzs7697//7Y31n//8Z7TDCWjevHkyDEPHHXecTNOMdjgAAPSqiooK71h91VVXdesY3cklnHbaaTIMQxkZGfrhD3+obdu2dbMF4fHss8/KMAwlJSVp69atUY0FsYVEOga89oOAYRh68803fcqvuuoqb1lpaWmUouxd//rXv7z9cOONN0Ytjr/97W+aMWOGhg4dquTkZH33u99VaWmpPB5P1GLqqi1btqigoEBTp06VxWIJmjCRpFGjRmnWrFmSpKKiophqJwD0N+3fHxz8QXPLli0+7x3CraWlRRdeeKH+9Kc/yeFwhP34kXLHHXdIkk488URNnz7dp6ympkY//elPlZOTo8TEROXk5Oi6665TbW1tj8+7bNky/fCHP9TIkSM7/L20va/59NNP9eKLL/b43ACA8Dv4M/rBP8OGDYt2iH1aSUmJFi1aFPAzZ6R1lEvYvXu3Xn75Zc2cOVMtLS1hPfff//53XX311Ro/frzi4uK8z5eKigq/fS+55BKNGDFCbrdb99xzT1jjQP9GIh04CH9EpYceekiSNGLECJ177rlRiWHZsmU666yzVF5eLqfTqf379+vDDz/Uddddp2uvvTYqMXXHunXr9Otf/1rvv/++GhsbO9z/mmuukSR99tlnfl/qAAD6l3PPPVfvvPOO3nnnHf34xz/2bq+qqtJnn30mSTryyCP1l7/8Re+8846+973vRSvUDn366adavXq1JOnqq6/2Kfv666914okn6ve//722bt2qpqYmbd26VaWlpZoyZUqPr0p75JFH9PLLL2v79u0d7nvsscdq2rRpkqQHH3ywR+cFAKAvKikpUVFRkYqKivzKTjjhBO97j9tuuy3s5w6WS3j00Ue1evVqnXTSSZKkDz/8UK+++mpYz/3aa6+prKxM69ev7/Cus0GDBmnu3LmSpLKyMu3ZsyessaD/IpEOHOS9997TW2+91Wvna2ho6LVzdcbu3bv1pz/9SZJ04YUXRuRKu47s2LFDP//5z2WaphISErR48WK98MILGjlypCTpySef1MqVK3s9ru5ISUnRmWeeqYULF+r888/vcP/TTz9daWlpkhTwNjkAQP+RmZmpk08+WSeffLIOO+ww7/b2CeFp06bpzDPP1Mknn6z09PSwnTvc7z+WLVsmSYqLi9OFF17oU3bDDTd4b5ueNWuW3njjDe8dWNXV1T2+++3oo4/Wj3/8Yy1durRT+7ede+3atfr00097dG4AQGSdc8453sRv28+qVauiHVbMGjp0qPe9x5FHHhnWY4fKJRx33HE666yztHjxYu+2J554Iqznz8rK0sUXX6yHH35YRx11VIf7t70faGxs1HPPPRfWWNB/kUgHArj77rs7td/GjRuVn5/vvU35kEMO0bnnnqvy8nKf/Q6eh+zVV1/VxIkTZbFYvFdDtZWPHj1aH3/8sb73ve8pOTlZ48aN08svvyxJevnll3XsscfKYrFowoQJfgn/f/zjH/rhD3+oI488UsOGDVNiYqJGjBihSy65RB9//HGn2rRy5UrvldNnnXWWT1mwuVzb3+J+2mmn+dT55JNP9O6773b489VXX3nr/OEPf/B+wL/66qv1y1/+UrNnz/Z+uy2px9Ps/Pvf/9ZFF12kESNGaNCgQUFvG9yyZYskqa6urlPtePfdd+V2u73nOfPMM/WXv/xFixYt0rhx4zqMa9CgQTr11FMl+f4uAAB938Hj4b///W+dfvrpSk5OVnZ2tm6//XafabsCjaunnXaadxyQpKefftpvTHI6nbrttts0fvx4DR48WKmpqcrNzdXvf/97vyuw2r+/+OSTT3TmmWdqyJAhOu+887zna9tn7dq1+tGPfqTU1FRlZ2dr0aJFMk1TH3/8sU4//XQNHjxYhx12mH7zm9/4tf21116TJE2YMEGZmZne7TU1NXrjjTcktX54f/bZZ/WDH/xAzz77rIYOHeqt25MpXlasWKEnn3yy03O9tp+ztS1uAEDf1P5L57afqVOnyu1265hjjpFhGBo0aJA++ugjb522OboNw9Dzzz8vyXe6mGXLlunXv/61jjjiCCUlJWnSpEn661//6nfumpoa/eIXv9ARRxwhi8WiYcOG6bTTTvNbz6qr478kNTU1afHixZo0aZJSUlKUkpKi3NxcPfPMM35xtB/L29ZQGTJkiNLT0/XTn/5UBw4ckPTt+wq73e5Xty2pHWyO9EjnEtrk5uZq9OjRkqS33npLu3bt8tunurq6U5+7//Of//jUKyws1EsvvaSCggLvxWmhTJ482bsf7wfQaSYwwC1cuNCUZEoyJ0+e7P3/e++9Z5qmac6dO9e7benSpd5677//vpmamuota/9jGIb5u9/9zrvv22+/7S0bM2aMaRiG9/HChQtN0zS9j4cNG2Yecsghfse7/fbb/c6Tmppq7tmzx3ue4uLigPFIMpOTk83PP/88YLuXLVvm3X7ttdd6t3/99dc+fbVs2TK/uE3TNKuqqrzbTz31VJ86p556atCY2v/MnTvXW2fmzJne7U899ZR3u91u9+mn7nr33XfNxMTETsVVVVVlmqbv77CzdQ528803B+y/g915553e/SorK7vdTgBA97UfJ9uPUabpO+61fzvdfvvw4cPNwYMH+40Rjz/+uHf/QONqqHGzqqrK3LNnjzlu3Lig+1x66aU+sbZtHzp0qM/7i7bxuv35jjjiCL/j/fznPzeHDRvmt/2vf/2r9xzbt2/3br/66qt9zv/KK694y04//XSfstNPP91b9tprr3XzN/Wt/fv3B/y9HKypqcm0WCymJDMvL6/H5wUAhFeoMbi9f/3rX2Z8fLwpyZwyZYrZ0tJiPvfcc966F110UcBjHn300X7j2qBBg8x//OMf3v03b95sZmdnBx1vb775Zu++XR3/GxsbzTPOOCPosX/1q1/5tLNtu9Vq9csVSDJvu+020zR931cE+jFN38+17fs20rmENvv37/d5X/H73/8+5O8/1M+oUaOCPjdyc3O9+7399ttB9/v+979vSjJTUlLM5ubmoPsBbbgiHWjnjDPO0NSpUyVJd911V9D9TNNUfn6+XC6XJOniiy/WypUrdccddyguLk6maerGG2/U119/7Ve3qqpKkydP1ksvvaTXX39dp5xyik/53r17deSRR+qPf/yjLr30Uu/57r77bp1//vn685//rJNPPlmS5HK5fG5BmjJlih599FH98Y9/1Ntvv62//vWvuv/++yVJ+/bt069//esO++CLL76QJFksFh166KEd7h8JbVfcSa23Z7Vpf4Xb3r179c0333Tr+DfeeKP3m/LTTz9df/zjH/Xwww/LYrF49ykqKtI777yj4cOHd+scPTF27Fjv/z///PNePz8AoOd27Nih7373u3rjjTf0i1/8wrv997//fch6jz76qM8V3+1vaR8+fLhuvfVWrV+/XlLrbdKvvvqqnnjiCe8VVS+88IJWrFjhd9y6ujrFx8frscce0+rVq71rcrTncrn0/PPP69577/WJJzs7W6+99pquu+66gO1oe+8g+Y5hUvAxXfId16uqqgJ3SAQkJCRo1KhRkhhnAaCve+qpp/zuGm67kjo3N1c33XSTJGnNmjW6++67vdOF2Wy2oFN+bdy4UXfeeaf+/Oc/Ky8vT1LrFeLtpxq7/vrrVVNTI6n17q0//vGPWrx4sZKSkiRJ999/v95//32/Y3dm/H/kkUe8d7FPnTpVr732ml5++WUdffTRkqQHHngg4LGdTqdsNpteeeUVn3xF27Hb1l7Jzs72lrWfEieU3solvPrqq9q7d6/3caD3LL2p7X1LQ0ODz5X8QDAJ0Q4A6Gtuu+02zZw5U//3f/+ntWvXBtxn3bp13g9e2dnZeu655zRo0CCde+65+vzzz/XKK6+osbFRr7zyit+8n0OGDNGqVatCznP69NNP68gjj9Tw4cP1wgsvSJKSk5P1hz/8Qampqdq/f7/effddSa1vAtpMnTpV77zzjh577DFt2rRJ+/bt8znuwbc+BdJ2a1VnboXqjEArZHek/bytiYmJAf/ftl9X49y+fbu3HywWi1566SUdcsghkqRt27Z552zbvn279wsLqfXNk9nBgiXh0r5NgW51AwD0fYmJiXrllVeUlZWl//mf/9ETTzyhffv2+YzbgRx33HHavXu393HbLe2S5PF4fD5wPvfcc/rOd74jSdq/f79+/vOfS5Kef/55zZ492+/YzzzzjM+0Jge7++67vV/i33vvvaqvr5ckLVmyRN///vd18skne5MS7dvRfqw6eFwONqYf/Li314xpi5NxFgBiW1FRkf70pz/p888/18KFC73bS0tLZbPZAta59NJLdccdd0iSTj75ZI0YMUL79u3TBx98oK+//lopKSneBbQtFotefvlln8+MDz/8sKTW8TY3N9fn2J0Z/9tP31JQUKCMjAxJ0hVXXKEFCxZ49zn42G3nnDhxombNmqVnn31W69ev165du1RXV6fMzExlZmb6XCDW/jNtKL2VS3jyySd9Hv/9739XbW2tz5ftixYt8plKNpIO/ux9+OGH98p5EbtIpAMH+Z//+R+dcMIJ+vDDD3X33Xd75+9s78svv/T+/7vf/a4GDRrkfTxlyhS98sorfvu1mT59esgk+rBhw7yLfrTf7+ijj1ZqaqokeQdaST7f5l522WX64x//GPTY7fftSLiSxp988onq6uo63C8rK8vb7pSUFO/29vONHzxfePv9Oqu6utr7/yOOOML7hkiSzxuV9vtJrVfyffLJJ506x4knnujz5qWreithDwAIrv0CWQf/XW7/ONii3OPGjfN+KIyLi1NaWpr27dvXpbH4YA6Hw3s3VnJysjeJLrW+/2gT6P1HUlJSyCT6wcdIS0vzJtInT54sKfj7j/YO7qtgY7rkO653Z0zvCcZaAIgN55xzjm699Vafbe2TrhaLRcuXL1dubq73b/sll1ziXUgykPaf+4YOHaqjjz5aH374oSRp8+bNSkpK8h7r4M+MHY23nRn/29e75JJLAsbY/m6vNlarVRMnTvQ+bh/X3r17A+YuOqs3cglVVVV6++23JbXeHdbc3KyWlha98soruv766737VVdX+30eDyQpKcn7HqW7eD+AriKRDgRw22236eKLL9Ybb7yh7373u12qG+wDdZuDb2s+WPvBLy7u29mXrFZrwP3b/vBXV1d7B74hQ4bogQce0DHHHCNJ3gVAD17gJJC2D8ldmTYl1ODz85//XH//+987PMbcuXO1fPlySfIuiCbJZ/GxtlvrpNYvHLpz1Xx8fHzQsva/u4P3+/DDD3X66ad36hxVVVXeBVS6o33ft09aAAB6T9uX15L/VcvtH7ffr72Dx6iEhPC+7T74/UZH7z/aT6MSTFfeg7Qf+9uPVQe/f2g/Hh68oGj7cX3MmDEdxhdObXEyzgJA39b+zqxgNmzY4DMubdiwQU1NTT4XvIXS0RjalX3DNf4HulMr1LF7khDurVxCWVmZN86ioiLddtttklqnd2mfSC8rK1NRUVGH5xs1apTPFHLdwWdvdBVzpAMBzJo1S8ccc4xM0ww4vctRRx3l/f+HH36o5uZm7+P2c5m1369NVwbprti2bZv3/3l5ebruuut06qmndvnK6PHjx0tqvUos0BzvbbZu3Rrw/+H4Rrf9G6X33nvP+//KysqA+3TFUUcd5U0ObNq0yef2+fa/u3HjxnXr+OHQ/ra/tjcwAIDe1TZPqdQ6FrVdnS3Je7u31Lvjhc1m07BhwyS1fsD+7LPPvGXRev8hffveQZLf1DUnnXSSd9z98MMPdeDAAUnSgQMHvFf/xcfHa9q0aRGL72BNTU3eK90YZwEgtu3YscM7F3nbxVAfffSR7rnnnqB11qxZ4/1/XV2dNmzY4H18+OGHa+zYsd5xM9RnxkDjbWe0r7d582aZpun30zaHene0/zK8Mwnw3sgleDwe74VzmZmZ+tWvfuXd/91339X27du7dK5waXvfkpKS4l0/BQiFRDoQgGEYfrePtTdx4kTvH/0dO3boiiuu0P/93/9p0aJFeu211yS1zo120UUX9Uq8knz+6L/11lt6/vnn9eKLL+pHP/pRl44zffp07/8/+OCDoPu98MILeuyxx7Ry5UrvAi+S9NVXX+nNN9/0Pq6oqAj4xuDgn7ZBVZKuvPJK7y3eTz75pH79619rxYoVPuf56U9/6v3/8uXLvQvPdDSX2tChQzVz5kxJrbeYX3LJJfrzn/+skpISLVmyRFLr7//yyy/3qdc2R3pnftpffedwOPTyyy/r5Zdf9nmD9vnnn3u3OxwOn3O1JRaSkpK6fEcEACA8vv/973tvmd67d6+mTp2q2267Tfn5+T5jzcUXX9xrMcXFxXnnMJda51J97bXXVFZW5jMv7GWXXdZrMUnS8OHDvVeUH/zeITs7W+eff76k1mTFZZddpj/96U+6/PLL5XQ6JUkXXnihzx17bWN6Z+/u+vvf/66XX37Z+x6sTds4e/CdcZ9//rl3mpn273sAAH3Pzp079e677/r9tP0d/8lPfuK9qvjFF1/0fkF67733at26dQGP+fzzz+uee+7Rm2++qcsuu8x79fcJJ5ygnJwcHXLIId5FSNt/ZnzkkUf0u9/9znuc7o63V1xxhff///M//6OnnnpK5eXleuaZZ3T77bfruOOO04svvtitY0u+V64/+uijevfdd0NOU9obuYTVq1d7L8C77LLLlJCQ4H1P4/F49PLLL3v3XbRoUac+dx98NXr7z9h79uzxbm97n9D+HG3aniO5ubkh714HvExggFu4cKEpyZRk3nzzzd7tzc3N5tixY71lksylS5d6y99//30zNTXVp7ztxzAM83e/+51337fffttbNnfu3IBxtJWPGjXKu62qqsq7/dRTT+3weOedd55fLNOnTw947PbtXrZsmXf77t27zcTERFOSOX/+fJ8Yly1bFrC9ksxhw4Z5/z906NBO9X0oZWVlpmEYAc919dVXB41r4cKFHR67urraPPTQQ4O2pTPH6Kz2v6tgP2+//bZ3/8bGRjMtLc2UZF588cVhiwMA0HUrVqww4+Pjg/79njJlirl//37v/sHGbdM0zVGjRnnL2gQbv0K9b9i9e7c5bty4oDFdeumlpsfj8e4f6D1Ae6eeeqp3n6qqqpDxhjre//7v/5qSzLi4OHPnzp0+ZaHG3cMOO8zcunVrp84RTPs2BPo5+Hfx4IMPess+/fTTTp0DANB72n9WDfZTVVVlLl++3Pt49uzZpmmaZmVlpRkXF2dKMidMmGA2Njb6HfP444/3O15CQoLP57JNmzaZ2dnZQc/fPnfQ1fHf7XabZ5xxRsj2tf+MHmxcDDaGt43JgcbCaOUSLrroIm+d//znP6ZpmuaXX37p3XbSSScFeip0SWeeN+39+9//9m7/7W9/2+PzY2DginQgiPj4eBUWFgYtnzJlitauXau5c+dq5MiRSkhIUFpams4++2z95S9/0XXXXdeL0bb6wx/+oLlz5yojI0PDhg3TlVdeqT/96U9dOkZ6erp+8IMfSJJee+21oFO1nH322TriiCOUnJysK6+8Uv/5z380efJkWSyWHi/4IUn5+flavXq1zjjjDKWmpmrw4ME64YQTtHTpUj322GM++7a/Xa0zt5/l5OToP//5j37xi19ozJgxGjRokKxWq0499VS98sorvbZCeCBvv/2294qKq666KmpxAABaFwD75z//qR/+8IcaMWKEEhISNGTIEH33u9/Vvffeq4qKCiUlJfVqTOnp6frXv/6lwsJCHX300bJYLEpJSdGJ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svvrzJkzmjhxopo1a6aQkBCdf/75deb/YmX31bx583TBBReofv36atWqlR544AHl5eXVULTeU5XjunXr1ql79+4KCQlR+/bttXTpUo/HCc/xp/MUX+Jv5xi+jPMD9zt69Khuv/12NWnSRPXr11fnzp31ww8/eDssv1BcXKzHHnvMLmf3xBNPyDAMb4fmViTS/dzll1+ud955R3v27NH777+vffv26aabbvJ2WFXy66+/ymq16t///rd27dql5557TgsWLNC0adO8HVq1FBQUaMSIEbr33nu9HUqlrVixQomJiZoxY4a2bdumLl26aPDgwTp+/Li3Q6uSnJwcdenSRfPnz/d2KG6xfv16TZw4UVu2bNHatWtVWFioK6+8Ujk5Od4OrUpatmyp2bNna+vWrfrhhx90xRVXaOjQodq1a5e3Q6u277//Xv/+97918cUXezuUOqeyn2ObNm3SqFGjNH78eG3fvl3Dhg3TsGHDtHPnzhqOvOZVdl+tW7dOo0aN0ldffaXNmzerVatWuvLKK3X06NEajrzmVXV8PHjwoB588EFddtllNRSpb6js/iooKND//d//6eDBg3rvvfe0Z88eLVy4UC1atKjhyGteZffVsmXLNGXKFM2YMUO7d+/Wq6++qhUrVtT64+eKqOxx3YEDBzRkyBBdfvnl2rFjhyZPnqy77rpLn332mYcjhSf423mKL/G3cwxfxfmB+50+fVr9+vVTvXr19J///Ee//PKLnn32WTVu3NjbofmFp556Si+//LJefPFF7d69W0899ZSefvppvfDCC94Ozb0M1CkffvihYTKZjIKCAm+H4hZPP/200aZNG2+H4RZLliwxGjZs6O0wKqV3797GxIkTbe+Li4uN5s2bG0lJSV6Myj0kGR988IG3w3Cr48ePG5KM9evXezsUt2ncuLGxaNEib4dRLVlZWcZ5551nrF271ujfv79x//33ezukOqWyn2M333yzMWTIELtlffr0Mf785z97NE5fUN3P/KKiIiMiIsJ47bXXPBWiz6jKvioqKjL69u1rLFq0yBg7dqwxdOjQGojUN1R2f7388stG27Zt/eZ4tjIqu68mTpxoXHHFFXbLEhMTjX79+nk0Tl9TkeO6v//978ZFF11kt2zkyJHG4MGDPRgZPMWfz1N8jT+eY3gb5wee8fDDDxuXXnqpt8PwW0OGDDHu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A9C1116rqKgoLV261G55dna23n33XQ0bNkyjRo1SixYtFBYWps6dO+vtt9922abJZNKqVavsljVq1MhuG4cPH9bNN9+sRo0aKTIyUkOHDtXBgwfd0ykAAOoIxnEAAGovxnGg9iCRDkBBQUEaM2aMli5dKsMwbMvfffddFRcX6/bbb1ePHj20evVq7dy5U3fffbdGjx6t7777rsrbLCws1ODBgxUREaGvv/5a33zzjRo0aKCrrrpKBQUF7ugWAAB1AuM4AAC1F+M4UHuQSAcgSbrzzju1b98+rV+/3rZsyZIlGj58uOLi4vTggw+qa9euatu2re677z5dddVVeuedd6q8vRUrVshqtWrRokXq3LmzOnbsqCVLlujQoUNat26dG3oEAEDdwTgOAEDtxTgO1A4k0gFIkjp06KC+fftq8eLFkqS9e/fq66+/1vjx41VcXKwnnnhCnTt3VmRkpBo0aKDPPvtMhw4dqvL2fvzxR+3du1cRERFq0KCBGjRooMjISOXl5Wnfvn3u6hYAAHUC4zgAALUX4zhQOwR5OwAAvmP8+PG67777NH/+fC1ZskTt2rVT//799dRTT+n555/XvHnz1LlzZ4WHh2vy5Mkub/kymUx2t6VJ524fK5Gdna0ePXrorbfeKrNuVFSU+zoFAEAdwTgOAEDtxTgO+D4S6QBsbr75Zt1///1atmyZXn/9dd17770ymUz65ptvNHToUN1+++2SJKvVqt9++00XXnih07aioqKUmppqe//7778rNzfX9r579+5asWKFoqOjZTabPdcpAADqCMZxAABqL8ZxwPcxtQsAmwYNGmjkyJGaOnWqUlNTdccdd0iSzjvvPK1du1abNm3S7t279ec//1np6eku27riiiv04osvavv27frhhx90zz33qF69erby2267TU2bNtXQoUP19ddf68CBA1q3bp3++te/6siRI57sJgAAfolxHACA2otxHPB9JNIB2Bk/frxOnz6twYMHq3nz5pKkRx99VN27d9fgwYM1YMAAxcbGatiwYS7befbZZ9WqVStddtlluvXWW/Xggw8qLCzMVh4WFqYNGzaodevWuvHGG9WxY0eNHz9eeXl5fCMOAEAVMY4DAFB7MY4Dvs1k/HHSJAAAAAAAAAAAYMMV6QAAAAAAAAAAuEAiHQAAAAAAAAAAF0ikAwAAAAAAAADgAol0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NavWMUyHDh1sd1AFBASocePGys3NrXCuoMSrr75q+zkoKEhFRUV6//339a9//UsBAf+b5KKiV6mff/75tru54uLiylxNf9111+nCCy/U3r17VVxcrLVr12rChAnlxgnUFBLpQDVFR0fbTnYuv/xybdq0SWvWrNHZs2f10Ucf6e67765wWzk5OeXWOXTokC2J3qBBAz399NO68MILJZ271Us6d0t7idIn+H+83bj0wFe/fn1JUnFxse3WsT+eMG/fvl2XX355hfpy4MABxcfH2y177bXXNH78eBUXF6tRo0b69NNPlZCQUKH2KqL0SfEFF1yghx9+WA888IAk6bPPPrMl0u+77z7bCb8rY8eO1dKlS13W6d27ty2RnpGRUaa8ZJ+X/j0AANw3fpa+/Tko6H+HthU50SpJhjvTsGFD28+lx8yS5PoflbfNBQsW2JLo1157rf7yl78oIiJCCxcutI0lpcdwR1yN639UkX1TnTHx9OnTuuqqq/Tdd99Jkm677TYtXbrUbvqW0scCJ0+eVFFRkS2WkuMNSWrTpk25MVSWs99vVfocHx9vu5ggPT3dVqd0Hxo1amS3zyujd+/etkS6o+OJksQHxxMAUHUlX+KbTCZFRETovPPOs50Hl/5s/+P4Ud7xQml33XWXWrZsqWXLlmn79u36/ffftW/fPu3bt08fffSRdu/erUaNGumJJ55Qp06dtHLlSv3000/at2+fdu/erd27d2vt2rXavn27y+2UF9Mfx6PSxwElyjumsFgsevfddyVJPXv2tE2flpaWpvXr19vlBi677DKX8ZRYsmSJ7rjjDqfl9erVU9euXbV3715JZcfE0nEyJsIbmCMdcLPSJ6enTp2SJNu3zpI0Y8YMGece9Gv3ysnJ0QUXXCDJ/mT9jyfUR48etf08ePBg3Xvvverfv7/Dq78lqWPHjrafSwajEqXnaCuZk/Wbb76xDU4l88O5w/z58zVu3DgVFxcrOjpa69atc2sSXTp3klk65tKJjrNnz1ar7b179zr89r70N+il50yVpMLCQh06dEiSbF92AAAcczR+ukP79u1tJ5v79u3TyZMnbWWlP8NLj9WeUnoMT0pK0tVXX61LL73U7uS9PK7G9ZqUnp6u/v3725Lo9957r954440yJ+qRkZG2mIuKivT999/bykqe0yJV/ATclVOnTtntk9K/37Zt21ar7dJXiG/atMn2c+k+/PEqckd27dqlvLy8MstL9qNU9nji0KFDtivfOZ4AgKor+RK/X79+uvjii21JdOncc1oaNWok6dwFbqXvHqrM8YJhGLrqqqv0+uuv6+eff1Z2drYmT54s6dyXr6XHkFtuuUXvvPOOfv31V2VlZemmm26SJO3cuVO//fabx49hyjumWL58uXJzcyVJY8aM0ahRo2xl5c0VXxE7duwo85yxwsJCuy8R/jgmlo6TMRHewBXpQDUdP35cGzduVFFRkTZt2qS1a9faykoGtJtuuklTpkxRfn6+Zs+eLZPJpISEBOXm5urAgQP66quvdPbsWdu6pb893rhxo/7zn/8oIiJC559/vt00KF9++aXefvttBQYG2h5W+kc9evRQaGio8vLytG3bNruy0onshQsX6uabb9b8+fNty/bu3at9+/apXbt2ks5d8V6VW6mee+45JSYmSpJCQkKUlJSkrKwsu9u/Sp98DhgwwHalmKMr21259dZbNX36dGVnZ9seXiedm2qmxLp16yrdh40bNyoxMVFjxozR5ZdfrpCQEK1evVpvvvmmrc7QoUPt1vnll19st3/369ev0tsEAH9WkfHTHZo0aaLBgwdrzZo1ys/P180336wHHnhA+/bt00svvWSrV/rk0FNKj+FJSUkaO3as/vOf/1ToIaUlmjVrpjZt2ujAgQNlxvWqqMqYePz4cV122WX6/fffJUkDBw7Urbfeqm+++cZWp3Xr1mrdurUk6Z577tH9998vSZowYYIef/xxbdu2TZ9//rkkqWXLlrr22mtt61b3OODRRx/VkSNHNG/ePNvy0mN0Vfo8evRoPf7448rJydGrr76qDh06qHnz5nrwwQdtde655x7bz0uXLrU9VH7GjBmaOXOmJOndd9/VK6+8onHjxqlfv36yWq1atmyZ7Wp0Sbr++uvttl06ocDxBAB4RkBAgG655RYtWLBA0rm7rGbMmKHTp09rxowZtnrlHS/cdNNNioiI0GWXXaaWLVuqqKhIP/zwg6289Plht27d1Lt3b7Vo0UJZWVl2D8/Mz8/3+DFMeccUJdO6BAUF6ZZbblF4eLjCw8OVk5OjlStXav78+ba70KqSJ5g3b542btyocePGqWfPnsrNzdWCBQu0b98+SedyB1dddZXdOoyJ8LoanZEd8BMVeWBJ9+7d7R5wuXDh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ExOVnp7ucukafzJ27Fi9+eabOnz4sAzD0Hvvvaevv/5aV155pa9DQyuC8Te5u985KisrlZaWptTUVE2cOFFffvmlN8Jz6ZtvvlFKSorOOeccTZ8+3eXSTv5+HOrq6vTSSy/pF7/4hUwmU4v1/PE4nKk9c7oncjPe4O783pbXpTcUFBQoMTFR559/vm677TZ99913LdYNhGNRWlqqTZs2uZU/8rdj0V4k0tvp2LFjamxsVFJSksP2pKQklZSUON2npKSkTfW7kvaM59kWLFiglJSUgEoadKb2jOk//vEPvfDCCwGVuPCW9oznvn379Kc//UmNjY16++23tXjxYq1YsUL333+/N0L2a+0Zz5///Oe677779KMf/Ujh4eEaOHCgLrvsMpZ2Qaey2WyaN2+eLrnkEg0bNszX4bjl1Vdf1fbt27V8+XJfh9Im+/bt09NPP61BgwbpnXfe0W233abbb79dL774oq9Dc8tdd92l66+/XoMHD1Z4eLguuugizZs3T9OnT/d1aG3S9BkcDN9Za2pqtGDBAk2bNk0Wi8XX4bTqoYceUlhYmG6//XZfh9ImR48eVWVlpR588EFlZWXpb3/7m372s59p8uTJev/9930dXqtWrVqlCy64QH379lVERISysrK0evVq/dd//ZevQ0Mrgu03ubvfOc4//3ytWbNGf/3rX/XSSy/JZrNp7NixOnTokBejdZSenq5169Zp8+bNevrpp1VUVKRLL71UFRUVTuv783GQpI0bN+rkyZO6+eabW6zjj8fhbO2Z0z2Rm+ls7s7vbX1ddrasrCz98Y9/VH5+vh566CG9//77uuqqq1o80S4QjsWLL76omJgYTZ482WU9fzsWHRHm6wAAT3jwwQf16quvqqCgwC/WYgxEFRUVuvHGG/Xcc88pPj7e1+EEBZvNpsTERD377LMKDQ3VqFGjdPjwYT388MNaunSpr8MLOAUFBXrggQf01FNPKT09XXv27NHcuXO1bNkyLV682NfhIUjNmTNHO3fuDJg1/A4ePKi5c+cqLy8v4OZDm82m0aNH64EHHpAkXXTRRdq5c6dyc3N10003+Ti61r322mt6+eWXtX79eg0dOlQ7duzQvHnzlJKSEhDxB5v6+npdd911MgxDTz/9tK/DadW2bdv0+OOPa/v27S7PfvRHNptNkjRx4kTdcccdkqSRI0dqy5Ytys3N1bhx43wZXqtWrVqljz/+WG+++abS0tL0wQcfaM6cOZygA69z9ztHRkaGMjIy7H+PHTtWQ4YM0TPPPKNly5Z1dphOnXn11YUXXqj09HSlpaXptddeC8grnV944QVdddVVLu9V4Y/HoStoy/zub6/L66+/3v7/w4cP14UXXqiBAweqoKBAV1xxhdfj8YQ1a9Zo+vTprf7u8Ldj0REk0tspPj5eoaGhKi0tddheWlqq5ORkp/skJye3qX5X0p7xbPLII4/owQcf1N///veAuaGaN7R1TPfu3av9+/frpz/9qX1b0w+jsLAw7d69WwMHDuzcoP1Ye16jvXv3Vnh4uEJDQ+3bhgwZopKSEtXV1SkiIqJTY/Zn7RnPxYsX68Ybb9Qtt9wi6fSXj6qqKt1666363e9+p5AQLrKCZ2VnZ+utt97SBx98oL59+/o6HLds27ZNR48e1cUXX2zf1tjYqA8++EBPPvmkamtrHT6T/Env3r11wQUXOGwbMmSI/vznP/sooraZP3++/ax06fRnVHFxsZYvXx5QifSmz+DS0lL17t3bvr20tFQjR470UVRt0/Qju7i4WO+++25AnI3+4Ycf6ujRo+rXr599W2Njo37zm99o5cqV2r9/v++Ca0V8fLzCwsKcvn/9/R8hT506pUWLFukvf/mLJkyYIOn0D/wdO3bokUceIZHu54LpN3lHvnM0XQW1Z8+eToqu7Xr27KnzzjuvxZj89ThIUnFxsf7+97/rjTfeaNN+/ngc2jOndyQ309k6Or+39rr0tnPOOUfx8fHas2eP00S6Px8L6fR3l927d2vDhg1t3tffjkVbkHVop4iICI0aNUr5+fn2bTabTfn5+Q7/KnmmjIwMh/qSlJeX12L9rqQ94ymdvgP1smXLtHnzZo0ePdoboQaMto7p4MGD9cUXX2jHjh32xzXXXKMf//jH2rFjh1JTU70Zvt9pz2v0kksu0Z49e+z/ICFJX3/9tXr37t2lk+hS+8azurq6WbK8KSFoGEbnBYsuxzAMZWdn6y9/+YveffddDRgwwNchue2KK65o9lk+evRoTZ8+XTt27PDbJLp0+jNz9+7dDtu+/vprpaWl+SiitmnpM+rMOSAQDBgwQMnJyQ6fz1arVZ988klAfGdt+pH9zTff6O9//7t69erl65DccuONN+rzzz93eO+mpKRo/vz5euedd3wdnksRERH6wQ9+EJDv3/r6etXX1wfFe7crCobf5J74ztHY2KgvvvjCIVHqa5WVldq7d2+LMfnbcTjT2rVrlZiYaP/HNXf543Foz5ze3txMZ/PE/N7a69LbDh06pO+++67FePz1WDR54YUXNGrUKI0YMaLN+/rbsWgTX97pNNC9+uqrhtlsNtatW2f8+9//Nm699VajZ8+eRklJiWEYhnHjjTcad911l73+Rx99ZISFhRmPPPKIsWvXLmPp0qVGeHi48cUXX/iqC36lreP54IMPGhEREcaf/vQn48iRI/ZHRUWFr7rgd9o6pmdrz12lg1lbx/PAgQNGTEyMkZ2dbezevdt46623jMTEROP+++/3VRf8SlvHc+nSpUZMTIzxyiuvGPv27TP+9re/GQMHDjSuu+46X3UBQeq2224zevToYRQUFDjML9XV1b4OrV3GjRtnzJ0719dhtGrr1q1GWFiY8fvf/9745ptvjJdfftmIiooyXnrpJV+H5pabbrrJ6NOnj/HWW28ZRUVFxhtvvGHEx8cbv/3tb30dWjMVFRXGZ599Znz22WeGJOPRRx81PvvsM6O4uNgwjNPfsXr27Gn89a9/NT7//HNj4sSJxoABA4xTp075OHLXsdfV1RnXXHON0bdvX2PHjh0O79/a2lpfh97quJ8tLS3NeOyxx7wbZAtai/2NN94wwsPDjWeffdb45ptvjFWrVhmhoaHGhx9+6OPIW4993LhxxtChQ4333nvP2Ldvn7F27VojMjLSeOqpp3wcOdwR6L/J3fnOcXYf7r33XuOdd94x9u7da2zbts24/vrrjcjISOPLL7/0RRcMwzCM3/zmN0ZBQYFRVFRkfPTRR8b48eON+Ph44+jRo4Zh+P9xaNLY2Gj069fPWLBgQbMyfz0OnpjTL7/8cmPVqlX2v1t7X3m7H+7O72f3o7XXpTf7UFFRYdx5551GYWGhUVRUZPz97383Lr74YmPQoEFGTU1Ni33wt2PRpLy83IiKijKefvppp234+lh0JhLpHbRq1SqjX79+RkREhDFmzBjj448/tpeNGzfOuOmmmxzqv/baa8Z5551nREREGEOHDjU2bdrk5Yj9W1vGMy0tzZDU7LF06VLvB+7H2voaPROJ9ObaOp5btmwx0tPTDbPZbJxzzjnG73//e6OhocHLUfuvtoxnfX29cc899xgDBw40IiMjjdTUVON///d/jRMnTng/cAQ1Z3OLJGPt2rW+Dq1dAiWRbhiG8X//93/GsGHDDLPZbAwePNh49tlnfR2S26xWqzF37lyjX79+RmRkpHHOOecYv/vd7/wigXu29957z+lrvOkz12azGYsXLzaSkpIMs9lsXHHFFcbu3bt9G/T3XMVeVFTU4vv3vffe83XorY772fwpke5O7C+88IJx7rnnGpGRkcaIESOMjRs3+i7gM7QW+5EjR4ybb77ZSElJMSIjI43zzz/fWLFihWGz2XwbONwWyL/J3fnOcXYf5s2bZ+9vUlKScfXVVxvbt2/3fvBnmDp1qtG7d28jIiLC6NOnjzF16lRjz5499nJ/Pw5N3nnnHUOS0znPX4+DJ+b0tLS0ZnkUV+8rb/fD3fn97H609rr0Zh+qq6uNK6+80khISDDCw8ONtLQ0Y/bs2c0S4v5+LJo888wzRrdu3YyTJ086bcPXx6IzmQyD6+EBAAAAAAAAAGgJa6QDAAAAAAAAAOACiXQAAAAAAAAAAFwgkQ4AAAAAAAAAgAsk0gEAAAAAAAAAcIFEOgAAAAAAAAAALpBIBwAAAAAAAADABRLpAAAAAAAAAAC4QCIdAAAAAAAAAAAXSKQD8IjLLrtM8+bN83UYAACgHZjHAQAIXMzjgHeQSAegn/70p8rKynJa9uGHH8pkMunzzz/3clQAAMAdzOMAAAQu5nEgcJBIB6BZs2YpLy9Phw4dala2du1ajR49WhdeeKEPIgMAAK1hHgcAIHAxjwOBg0Q6AP3kJz9RQkKC1q1b57C9srJSr7/+uiZNmqRp06apT58+ioqK0vDhw/XKK6+4bNNkMmnjxo0O23r27OnwHAcPHtR1112nnj17Ki4uThMnTtT+/fs90ykAALoI5nEAAAIX8zgQOEikA1BYWJhmzJihdevWyTAM+/bXX39djY2NuuGGGzRq1Cht2rRJO3fu1K233qobb7xRW7dubfdz1tfXKzMzUzExMfrwww/10UcfqXv37srKylJdXZ0nugUAQJfAPA4AQOBiHgcCB4l0AJKkX/ziF9q7d6/ef/99+7a1a9fq2muvVVpamu68806NHDlS55xzjn79618rKytLr732Wrufb8OGDbLZbHr++ec1fPhwDRkyRGvXrtWBAwdUUFDggR4BANB1MI8DABC4mMeBwEAiHYAkafDgwRo7dqzWrFkjSdqzZ48+/PBDzZo1S42NjVq2bJmGDx+uuLg4de/eXe+8844OHDjQ7uf717/+pT179igmJkbdu3dX9+7dFRcXp5qaGu3du9dT3QIAoEtgHgcAIHAxjwOBIczXAQDwH7NmzdKvf/1rrV69WmvXrtXAgQM1btw4PfTQQ3r88ce1cuVKDR8+XNHR0Zo3b57LS75MJpPDZWnS6cvHmlRWVmrUqFF6+eWXm+2bkJDguU4BANBFMI8DABC4mMcB/0ciHYDdddddp7lz52r9+vX64x//qNtuu00mk0kfffSRJk6cqBtuuEGSZLPZ9PXXX+uCCy5osa2EhAQdOXLE/vc333yj6upq+98XX3yxNmzYoMTERFksls7rFAAAXQTzOAAAgYt5HPB/LO0CwK579+6aOnWqFi5cqCNHjujmm2+WJA0aNEh5eXnasmWLdu3apV/+8pcqLS112dbll1+uJ598Up999pk+/fRT/epXv1J4eLi9fPr06YqPj9fEiRP14YcfqqioSAUFBbr99tt16NChzuwmAABBiXkcAIDAxTwO+D8S6QAczJo1SydOnFBmZqZSUlIkSXfffbcuvvhiZWZm6rLLLlNycrImTZrksp0VK1YoNTVVl156qX7+85/rzjvvVFRUlL08KipKH3zwgfr166fJkydryJAhmjVrlmpqavgXcQAA2ol5HACAwMU8Dvg3k3H2okkAAAAAAAAAAMCOM9IBAAAAAAAAAHCBRDoAAAAAAAAAAC6QSAcAAAAAAAAAwAUS6QAAAAAAAAAAuEAiHQAAAAAAAAAAF0ikAwAAAAAAAADgAol0AAAAAAAAAABcIJEOAAAAAAAAAIALJNIBAAAAAAAAAHCBRDoAAAAAAAAAAC6QSAcAAAAAAAAAwAUS6QAAAAAAAAAAuPD/A/IIQmwUCbVNAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1500x1000 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "brainstate.random.seed(42)\n",
    "\n",
    "fig, axes = plt.subplots(2, 3, figsize=(15, 10))\n",
    "\n",
    "# Normal\n",
    "samples = brainstate.random.normal(0, 1, 10000)\n",
    "axes[0, 0].hist(np.array(samples), bins=50, density=True, alpha=0.7, edgecolor='black')\n",
    "axes[0, 0].set_title('Normal(μ=0, σ=1)', fontsize=12, fontweight='bold')\n",
    "axes[0, 0].set_xlabel('Value')\n",
    "axes[0, 0].set_ylabel('Density')\n",
    "axes[0, 0].grid(alpha=0.3)\n",
    "\n",
    "# Uniform\n",
    "samples = brainstate.random.uniform(0, 1, 10000)\n",
    "axes[0, 1].hist(np.array(samples), bins=50, density=True, alpha=0.7, edgecolor='black')\n",
    "axes[0, 1].set_title('Uniform(0, 1)', fontsize=12, fontweight='bold')\n",
    "axes[0, 1].set_xlabel('Value')\n",
    "axes[0, 1].set_ylabel('Density')\n",
    "axes[0, 1].grid(alpha=0.3)\n",
    "\n",
    "# Exponential\n",
    "samples = brainstate.random.exponential(1.0, 10000)\n",
    "axes[0, 2].hist(np.array(samples), bins=50, density=True, alpha=0.7, edgecolor='black')\n",
    "axes[0, 2].set_title('Exponential(λ=1)', fontsize=12, fontweight='bold')\n",
    "axes[0, 2].set_xlabel('Value')\n",
    "axes[0, 2].set_ylabel('Density')\n",
    "axes[0, 2].grid(alpha=0.3)\n",
    "\n",
    "# Beta\n",
    "samples = brainstate.random.beta(2, 5, 10000)\n",
    "axes[1, 0].hist(np.array(samples), bins=50, density=True, alpha=0.7, edgecolor='black')\n",
    "axes[1, 0].set_title('Beta(α=2, β=5)', fontsize=12, fontweight='bold')\n",
    "axes[1, 0].set_xlabel('Value')\n",
    "axes[1, 0].set_ylabel('Density')\n",
    "axes[1, 0].grid(alpha=0.3)\n",
    "\n",
    "# Binomial\n",
    "samples = brainstate.random.binomial(20, 0.5, 10000)\n",
    "axes[1, 1].hist(np.array(samples), bins=21, density=True, alpha=0.7, edgecolor='black')\n",
    "axes[1, 1].set_title('Binomial(n=20, p=0.5)', fontsize=12, fontweight='bold')\n",
    "axes[1, 1].set_xlabel('Value')\n",
    "axes[1, 1].set_ylabel('Density')\n",
    "axes[1, 1].grid(alpha=0.3)\n",
    "\n",
    "# Poisson\n",
    "samples = brainstate.random.poisson(5, 10000)\n",
    "axes[1, 2].hist(np.array(samples), bins=range(0, 20), density=True, alpha=0.7, edgecolor='black')\n",
    "axes[1, 2].set_title('Poisson(λ=5)', fontsize=12, fontweight='bold')\n",
    "axes[1, 2].set_xlabel('Value')\n",
    "axes[1, 2].set_ylabel('Density')\n",
    "axes[1, 2].grid(alpha=0.3)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "891ef892ae243f2d",
   "metadata": {},
   "source": [
    "## Custom RandomState Instances\n",
    "\n",
    "For advanced use cases, you can create custom `RandomState` instances with independent random streams:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "cf8892d7a4a23211",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:44.097556Z",
     "start_time": "2025-10-10T10:05:44.091292Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:11.181506Z",
     "iopub.status.busy": "2026-05-30T16:21:11.181315Z",
     "iopub.status.idle": "2026-05-30T16:21:11.187079Z",
     "shell.execute_reply": "2026-05-30T16:21:11.186060Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RNG 1:\n",
      "RandomState(Array((), dtype=key<fry>) overlaying:\n",
      "[ 0 42])\n"
     ]
    }
   ],
   "source": [
    "# Create custom random generators\n",
    "rng1 = brainstate.random.RandomState(42)\n",
    "rng2 = brainstate.random.RandomState(123)\n",
    "\n",
    "print(\"RNG 1:\")\n",
    "print(rng1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "64ebd13e567cc95d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:44.845564Z",
     "start_time": "2025-10-10T10:05:44.838882Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:11.188944Z",
     "iopub.status.busy": "2026-05-30T16:21:11.188782Z",
     "iopub.status.idle": "2026-05-30T16:21:11.195311Z",
     "shell.execute_reply": "2026-05-30T16:21:11.194663Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Samples from RNG1: [ 0.60576403  0.7990441  -0.908927   -0.63525754 -1.2226585 ]\n",
      "Samples from RNG2: [-0.7828054  -1.5373377  -0.5513038  -0.02385257  1.164293  ]\n",
      "\n",
      "Are they different? True\n"
     ]
    }
   ],
   "source": [
    "# Generate independent random sequences\n",
    "samples1 = rng1.randn(5)\n",
    "samples2 = rng2.randn(5)\n",
    "\n",
    "print(f\"Samples from RNG1: {samples1}\")\n",
    "print(f\"Samples from RNG2: {samples2}\")\n",
    "print(f\"\\nAre they different? {not jnp.allclose(samples1, samples2)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "9c1f8d3c3a5a1fe",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:45.490800Z",
     "start_time": "2025-10-10T10:05:45.486129Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:11.197905Z",
     "iopub.status.busy": "2026-05-30T16:21:11.197478Z",
     "iopub.status.idle": "2026-05-30T16:21:11.203379Z",
     "shell.execute_reply": "2026-05-30T16:21:11.202601Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "After re-seeding RNG1 to 999: [ 0.8200472  -0.35510033 -1.2458946  -0.33925015 -0.7285477 ]\n"
     ]
    }
   ],
   "source": [
    "# Re-seed custom RNG\n",
    "rng1.seed(999)\n",
    "samples3 = rng1.randn(5)\n",
    "print(f\"\\nAfter re-seeding RNG1 to 999: {samples3}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "practical_examples",
   "metadata": {},
   "source": [
    "## Practical Examples\n",
    "\n",
    "### Example 1: Mini-Batch Sampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "minibatch_example",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:05:47.892862Z",
     "start_time": "2025-10-10T10:05:47.074855Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:11.205750Z",
     "iopub.status.busy": "2026-05-30T16:21:11.205549Z",
     "iopub.status.idle": "2026-05-30T16:21:12.605449Z",
     "shell.execute_reply": "2026-05-30T16:21:12.604686Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Created 4 mini-batches\n",
      "First batch shape: X=(32, 10), y=(32,)\n"
     ]
    }
   ],
   "source": [
    "def create_mini_batches(X, y, batch_size=32, shuffle=True):\n",
    "    \"\"\"Create mini-batches for training.\"\"\"\n",
    "    n_samples = len(X)\n",
    "    \n",
    "    # Shuffle indices\n",
    "    if shuffle:\n",
    "        indices = brainstate.random.permutation(n_samples)\n",
    "    else:\n",
    "        indices = jnp.arange(n_samples)\n",
    "    \n",
    "    # Create batches\n",
    "    batches = []\n",
    "    for start_idx in range(0, n_samples, batch_size):\n",
    "        end_idx = min(start_idx + batch_size, n_samples)\n",
    "        batch_indices = indices[start_idx:end_idx]\n",
    "        batches.append((X[batch_indices], y[batch_indices]))\n",
    "    \n",
    "    return batches\n",
    "\n",
    "# Generate dummy dataset\n",
    "brainstate.random.seed(0)\n",
    "X = brainstate.random.randn(100, 10)  # 100 samples, 10 features\n",
    "y = brainstate.random.randint(0, 2, 100)  # Binary labels\n",
    "\n",
    "# Create mini-batches\n",
    "batches = create_mini_batches(X, y, batch_size=32)\n",
    "print(f\"Created {len(batches)} mini-batches\")\n",
    "print(f\"First batch shape: X={batches[0][0].shape}, y={batches[0][1].shape}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dropout_example",
   "metadata": {},
   "source": [
    "### Example 2: Dropout Layer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "dropout_impl",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:06:28.590054Z",
     "start_time": "2025-10-10T10:06:28.518870Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:12.607701Z",
     "iopub.status.busy": "2026-05-30T16:21:12.607469Z",
     "iopub.status.idle": "2026-05-30T16:21:12.692532Z",
     "shell.execute_reply": "2026-05-30T16:21:12.691556Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input:  [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n",
      "Output: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n",
      "Zeros:  0/10\n"
     ]
    }
   ],
   "source": [
    "class Dropout(brainstate.nn.Module):\n",
    "    \"\"\"Dropout layer with random masking.\"\"\"\n",
    "    \n",
    "    def __init__(self, drop_rate=0.5):\n",
    "        super().__init__()\n",
    "        self.drop_rate = drop_rate\n",
    "\n",
    "    def __call__(self, x):\n",
    "        fit = brainstate.environ.get('fit', False)\n",
    "        if not fit:\n",
    "            return x\n",
    "        \n",
    "        # Generate random mask\n",
    "        keep_prob = 1.0 - self.drop_rate\n",
    "        mask = brainstate.random.bernoulli(keep_prob, x.shape)\n",
    "        \n",
    "        # Apply dropout and scale\n",
    "        return x * mask / keep_prob\n",
    "\n",
    "# Test dropout\n",
    "brainstate.random.seed(42)\n",
    "dropout = Dropout(drop_rate=0.3)\n",
    "\n",
    "x = jnp.ones(10)\n",
    "y = dropout(x)\n",
    "\n",
    "print(f\"Input:  {x}\")\n",
    "print(f\"Output: {y}\")\n",
    "print(f\"Zeros:  {jnp.sum(y == 0)}/10\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "noise_example",
   "metadata": {},
   "source": [
    "### Example 3: Noisy Neural Network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "noisy_network",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-10T10:06:35.063528Z",
     "start_time": "2025-10-10T10:06:34.811438Z"
    },
    "execution": {
     "iopub.execute_input": "2026-05-30T16:21:12.694991Z",
     "iopub.status.busy": "2026-05-30T16:21:12.694751Z",
     "iopub.status.idle": "2026-05-30T16:21:13.052713Z",
     "shell.execute_reply": "2026-05-30T16:21:13.051728Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Output 1: [-0.29487485 -0.37535232 -0.19899406]\n",
      "Output 2: [-0.30561778 -0.33523202 -0.16594572]\n",
      "Difference: [-0.01074293  0.0401203   0.03304833]\n"
     ]
    }
   ],
   "source": [
    "class NoisyLayer(brainstate.nn.Module):\n",
    "    \"\"\"Linear layer with Gaussian noise.\"\"\"\n",
    "    \n",
    "    def __init__(self, d_in, d_out, noise_std=0.1):\n",
    "        super().__init__()\n",
    "        self.noise_std = noise_std\n",
    "        \n",
    "        # Parameters with noise\n",
    "        self.w = brainstate.ParamState(brainstate.random.randn(d_in, d_out) * 0.1)\n",
    "        self.b = brainstate.ParamState(jnp.zeros(d_out))\n",
    "    \n",
    "    def __call__(self, x):\n",
    "        # Add weight noise\n",
    "        w_noisy = self.w.value + brainstate.random.normal(0, self.noise_std, self.w.value.shape)\n",
    "        \n",
    "        # Forward pass\n",
    "        return x @ w_noisy + self.b.value\n",
    "\n",
    "# Create and test\n",
    "brainstate.random.seed(0)\n",
    "layer = NoisyLayer(5, 3, noise_std=0.01)\n",
    "\n",
    "x = jnp.ones(5)\n",
    "y1 = layer(x)\n",
    "y2 = layer(x)  # Different due to noise\n",
    "\n",
    "print(f\"Output 1: {y1}\")\n",
    "print(f\"Output 2: {y2}\")\n",
    "print(f\"Difference: {y2 - y1}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "best_practices",
   "metadata": {},
   "source": [
    "## Best Practices\n",
    "\n",
    "### 1. Always Set Seeds for Reproducibility\n",
    "\n",
    "```python\n",
    "# At the start of your script/notebook\n",
    "brainstate.random.seed(42)\n",
    "```\n",
    "\n",
    "### 2. Use Custom RNGs for Independent Streams\n",
    "\n",
    "```python\n",
    "# For data augmentation\n",
    "aug_rng = brainstate.random.RandomState(seed=123)\n",
    "\n",
    "# For model initialization  \n",
    "init_rng = brainstate.random.RandomState(seed=456)\n",
    "```\n",
    "\n",
    "### 3. Save and Restore State for Checkpoints\n",
    "\n",
    "```python\n",
    "# Save state\n",
    "checkpoint = {\n",
    "    'model': model.state_dict(),\n",
    "    'rng_key': brainstate.random.get_key()\n",
    "}\n",
    "\n",
    "# Restore state\n",
    "brainstate.random.set_key(checkpoint['rng_key'])\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "summary",
   "metadata": {},
   "source": [
    "## Summary\n",
    "\n",
    "In this tutorial, you learned:\n",
    "\n",
    "✅ **Seed management** for reproducible experiments  \n",
    "✅ **Random sampling** with various distributions  \n",
    "✅ **Custom RandomState** instances for independent streams  \n",
    "✅ **Practical applications** in neural networks  \n",
    "✅ **Best practices** for random number generation  \n",
    "\n",
    "### Key Points\n",
    "\n",
    "- 🎲 BrainState provides a NumPy-like interface to JAX's random system\n",
    "- 🔐 Always set seeds for reproducibility\n",
    "- ⚡ Random functions are JIT-compatible and high-performance\n",
    "- 🔄 State is automatically managed for you\n",
    "\n",
    "### Next Steps\n",
    "\n",
    "Continue with:\n",
    "- **Neural Network Modules** - Use random initialization in models\n",
    "- **Program Transformations** - Combine randomness with JIT, vmap, and grad\n",
    "- **Training Loops** - Implement stochastic gradient descent\n",
    "\n",
    "### Additional Resources\n",
    "\n",
    "- 📚 [JAX Random Documentation](https://jax.readthedocs.io/en/latest/jax.random.html)\n",
    "- 🎲 [NumPy Random Documentation](https://numpy.org/doc/stable/reference/random/index.html)\n",
    "- 🧠 [BrainState API Reference](https://brainx.chaobrain.com/brainstate/)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Ecosystem-py",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
