True randomness for AI and machine learning. Non-recursive, stateless, cryptographically secure random number generator.
Project description
๐ The Problem
Pseudo-random number generators (PRNGs) like Mersenne Twister and Python's random are recursive:
xโโโ = (aยทxโ + c) mod m
This creates:
- ๐ Hidden correlations โ each number depends on the one before
- ๐ Periodicity โ sequences eventually repeat
- ๐งฑ Exploration boundaries โ AI can't truly explore
- ๐ญ False reproducibility โ same seed = same path
AI deserves better.
๐ฏ The Solution: Aleam
import aleam as al
rng = al.Aleam()
x = rng.random() # True randomness. No recursion. No state.
Aleam implements the proven equation:
ฮจ(t) = BLAKE2s( (ฮฆ ร ฮ(t)) โ ฯ(t) )
| Symbol | Meaning |
|---|---|
| ฮฆ | Golden ratio prime (0x9E3779B97F4A7C15) |
| ฮ(t) | 64-bit true entropy from system CSPRNG |
| ฯ(t) | Nanosecond timestamp |
| โ | XOR mixing |
| BLAKE2s | Cryptographic hash |
Properties:
| ๐ Non-recursive | ๐ฒ Stateless | ๐ Cryptographically Secure | ๐ง AI-Optimized |
|---|---|---|---|
| Each call independent | No seeds, no state | Powered by BLAKE2s | Gradient noise, latent sampling |
๐ฌ How It Works
The Core Equation in Detail
| Step | Operation | Description |
|---|---|---|
| 1 | ฮ(t) = get_entropy_64() |
Pull 64-bit true entropy from system |
| 2 | ฮฉ = ฮฆ ร ฮ(t) |
Golden ratio mixing (bijective, maximally equidistributed) |
| 3 | ฯ = time.time_ns() |
Nanosecond timestamp for uniqueness |
| 4 | ฮฃ = ฮฉ โ ฯ |
XOR mixing over 64 bits |
| 5 | ฯ = BLAKE2s(ฮฃ) |
Cryptographic hash to 64-bit output |
| 6 | r = ฯ / 2โถโด |
Map to floating point [0, 1) |
โก Performance: CPU vs GPU
| Metric | CPU (Python) | CPU (C++ Core) | GPU (CuPy) |
|---|---|---|---|
| Speed | Coming soon | Coming soon | Coming soon |
| vs Python | Coming soon | Coming soon | Coming soon |
| Time for 1B numbers | Coming soon | Coming soon | Coming soon |
Benchmarks pending - will be updated after Colab testing
๐ก Key Insight: The C++ migration delivers significant CPU speedup over pure Python, while GPU acceleration provides massive parallel performance.
๐ Statistical Validation
After 2.55 million samples, Aleam passed all 10 rigorous tests:
| Test | Result | Status |
|---|---|---|
| Mean | 0.499578 | โ |
| Variance | 0.083154 | โ |
| Chi-Square (Uniformity) | 21.40 (critical 30.14) | โ PASS |
| Max Autocorrelation | 0.0094 | โ EXCELLENT |
| ฯ Estimation Error | 0.0105% | โ EXCELLENT |
| Shannon Entropy | 0.9999 | โ NEAR-PERFECT |
"True randomness is not a bug โ it's a feature."
๐ Quick Start
Install from PyPI (recommended)
pip install aleam
Install from source
git clone https://github.com/fardinsabid/aleam.git
cd aleam
pip install .
Basic Usage
import aleam as al
# Create a true random generator
rng = al.Aleam()
# Core randomness
x = rng.random() # 0.90324326
u64 = rng.random_uint64() # 12345678901234567890
y = rng.randint(1, 100) # 86
z = rng.choice(['AI', 'ML', 'Aleam']) # 'ML'
u = rng.uniform(5.0, 10.0) # 7.234
n = rng.gauss(0.0, 1.0) # -0.432
# Sampling (requires list, not range)
population = list(range(10000))
batch = rng.sample(population, 64) # Random 64 unique indices
# Shuffle list in-place
items = [1, 2, 3, 4, 5]
rng.shuffle(items) # [3, 1, 5, 2, 4]
# Random bytes for cryptography
key = rng.random_bytes(32) # 32 cryptographically secure bytes
โจ Features
๐ฒ Core Randomness
| Method | Description | Example |
|---|---|---|
random() |
True random float in [0, 1) | rng.random() |
random_uint64() |
True random 64-bit integer | rng.random_uint64() |
randint(a, b) |
Random integer in [a, b] | rng.randint(1, 100) |
choice(seq) |
Random element from sequence | rng.choice(['a', 'b', 'c']) |
shuffle(lst) |
Shuffle list in-place | rng.shuffle(my_list) |
sample(pop, k) |
Sample k unique elements | rng.sample(list(range(100)), 10) |
random_bytes(n) |
Generate n random bytes | rng.random_bytes(32) |
๐ Statistical Distributions
| Distribution | Method | Example |
|---|---|---|
| Uniform | uniform(low, high) |
rng.uniform(5, 10) |
| Normal (Gaussian) | gauss(mu, sigma) |
rng.gauss(0, 1) |
| Exponential | exponential(rate) |
rng.exponential(1.0) |
| Beta | beta(alpha, beta) |
rng.beta(2, 5) |
| Gamma | gamma(shape, scale) |
rng.gamma(2, 1) |
| Poisson | poisson(lam) |
rng.poisson(3.5) |
| Laplace | laplace(loc, scale) |
rng.laplace(0, 1) |
| Logistic | logistic(loc, scale) |
rng.logistic(0, 1) |
| Log-Normal | lognormal(mu, sigma) |
rng.lognormal(0, 1) |
| Weibull | weibull(shape, scale) |
rng.weibull(1.5, 1) |
| Pareto | pareto(alpha, scale) |
rng.pareto(2, 1) |
| Chi-square | chi_square(df) |
rng.chi_square(5) |
| Student's t | student_t(df) |
rng.student_t(3) |
| F-distribution | f_distribution(df1, df2) |
rng.f_distribution(5, 10) |
| Dirichlet | dirichlet(alpha) |
rng.dirichlet([1, 2, 3]) |
๐ง AI/ML Features
| Class | Methods | Use Case |
|---|---|---|
AIRandom |
gradient_noise(), latent_vector(), dropout_mask(), augmentation_params(), mini_batch(), exploration_noise() |
Training, augmentation, RL exploration |
GradientNoise |
add_noise(), reset(), current_scale() |
Gradient noise injection with decay |
LatentSampler |
sample(), sample_one(), interpolate() |
Latent space sampling for VAEs/GANs |
๐ข Array Operations
| Function | Description | Example |
|---|---|---|
random_array(shape) |
Uniform random array | al.random_array((100, 100)) |
randn_array(shape, mu, sigma) |
Normal random array | al.randn_array(1000, 0, 1) |
randint_array(shape, low, high) |
Integer random array | al.randint_array((50,), 0, 10) |
choice_array(a, size, replace, p) |
Weighted sampling | al.choice_array(fruits, size=100, p=weights) |
๐ Framework Integrations
PyTorch
import torch
import aleam as al
gen = al.TorchGenerator(device='cuda' if torch.cuda.is_available() else 'cpu')
tensor = gen.randn(100, 100) # True random tensor on GPU
tensor = gen.rand(100, 100) # Uniform [0, 1) tensor
tensor = gen.randint(0, 10, (100, 100)) # Integer tensor
TensorFlow
import tensorflow as tf
import aleam as al
gen = al.TFGenerator()
tensor = gen.normal((100, 100), mean=0, stddev=1)
tensor = gen.uniform((100, 100), minval=0, maxval=1)
tensor = gen.randint((100, 100), minval=0, maxval=10)
JAX
import jax
import aleam as al
gen = al.JAXGenerator()
key = gen.key() # True random key
tensor = jax.random.normal(key, (100, 100))
CuPy (Fastest GPU)
import cupy as cp
import aleam as al
gen = al.CuPyGenerator()
arr = gen.randn((10000, 10000)) # True random on GPU
arr = gen.random((10000, 10000)) # Uniform on GPU
arr = gen.randint((10000, 10000), 0, 10)
Pandas
import pandas as pd
import aleam as al
gen = al.PandasGenerator()
series = gen.series(1000, distribution="normal", params="mu=0,sigma=1")
df = gen.dataframe(1000, columns=['a', 'b', 'c'])
shuffled = gen.shuffle(df)
NumPy
import aleam as al
import numpy as np
# Direct array generation
arr = al.random_array((100, 100)) # Returns list, convert to numpy if needed
np_arr = np.array(arr)
# Or use module-level functions
arr = al.random_array((1000,)) # 1D array
matrix = al.random_array((10, 10)) # 2D matrix
norm_arr = al.randn_array(1000, 0, 1) # Normal distribution
int_arr = al.randint_array((50,), 0, 10) # Integers
โก CUDA Acceleration
Aleam provides GPU acceleration through multiple backends:
| Method | Speed |
|---|---|
| CPU (Python) | Coming soon |
| CPU (C++ Core) | Coming soon |
| CuPy GPU | Coming soon |
| PyTorch CUDA | Coming soon |
| TensorFlow GPU | Coming soon |
| JAX GPU | Coming soon |
import aleam as al
# Automatic GPU acceleration (auto-detects best backend)
cuda_gen = al.CUDAGenerator()
# Generate true random numbers on GPU
cupy_arr = cuda_gen.cupy_random((10000, 10000))
# Or use with specific frameworks
torch_tensor = cuda_gen.torch_randn(10000, 10000, device='cuda')
tf_tensor = cuda_gen.tf_random_normal((10000, 10000))
๐ฆ Installation Details
From PyPI (recommended for users)
pip install aleam
With Framework Support
# PyTorch
pip install aleam[torch]
# TensorFlow
pip install aleam[tensorflow]
# JAX
pip install aleam[jax]
# CuPy (for maximum GPU speed)
pip install aleam[cupy]
# Data science
pip install aleam[pandas]
# All frameworks
pip install aleam[all]
From Source (for development)
git clone https://github.com/fardinsabid/aleam.git
cd aleam
pip install .
Development Installation
pip install -e .[dev]
๐ Project Structure
aleam/
โ
โโโ .github/
โ โโโ workflows/
โ โโโ tests.yml
โ โโโ publish.yml
โ โโโ security.yml
โ โโโ docs.yml
โ
โโโ aleam/
โ โ
โ โโโ __init__.py
โ โโโ py.typed
โ
โโโ src/
โ โ
โ โโโ aleam/
โ โ
โ โโโ bindings/
โ โ โโโ module.cpp
โ โ โโโ exports.h
โ โ
โ โโโ core/
โ โ โโโ aleam_core.h
โ โ โโโ aleam_core.cpp
โ โ โโโ constants.h
โ โ โโโ utils.h
โ โ
โ โโโ entropy/
โ โ โโโ entropy.h
โ โ โโโ entropy_linux.h
โ โ โโโ entropy_windows.h
โ โ โโโ entropy_darwin.h
โ โ
โ โโโ hash/
โ โ โโโ blake2s.h
โ โ โโโ blake2s_config.h
โ โ
โ โโโ distributions/
โ โ โโโ distributions.h
โ โ โโโ distributions.cpp
โ โ โโโ normal.h
โ โ โโโ exponential.h
โ โ โโโ beta.h
โ โ โโโ gamma.h
โ โ โโโ poisson.h
โ โ โโโ laplace.h
โ โ โโโ logistic.h
โ โ โโโ lognormal.h
โ โ โโโ weibull.h
โ โ โโโ pareto.h
โ โ โโโ chi_square.h
โ โ โโโ student_t.h
โ โ โโโ f_distribution.h
โ โ โโโ dirichlet.h
โ โ
โ โโโ arrays/
โ โ โโโ arrays.h
โ โ โโโ arrays.cpp
โ โ โโโ array_utils.h
โ โ
โ โโโ ai/
โ โ โโโ ai.h
โ โ โโโ ai.cpp
โ โ โโโ gradient_noise.h
โ โ โโโ latent_sampler.h
โ โ โโโ augmentation.h
โ โ
โ โโโ integrations/
โ โ โโโ integrations.h
โ โ โโโ integrations.cpp
โ โ โโโ torch_integration.h
โ โ โโโ torch_integration.cpp
โ โ โโโ tensorflow_integration.h
โ โ โโโ tensorflow_integration.cpp
โ โ โโโ jax_integration.h
โ โ โโโ jax_integration.cpp
โ โ โโโ cupy_integration.h
โ โ โโโ cupy_integration.cpp
โ โ โโโ pandas_integration.h
โ โ โโโ pandas_integration.cpp
โ โ โโโ polars_integration.h
โ โ โโโ polars_integration.cpp
โ โ โโโ xarray_integration.h
โ โ โโโ xarray_integration.cpp
โ โ โโโ pymc_integration.h
โ โ โโโ pymc_integration.cpp
โ โ โโโ dask_integration.h
โ โ โโโ dask_integration.cpp
โ โ
โ โโโ cuda/
โ โโโ cuda_kernels.h
โ โโโ cuda_kernels.cu
โ โโโ cuda_uniform.cu
โ โโโ cuda_normal.cu
โ โโโ cuda_utils.h
โ
โโโ include/
โ โโโ aleam/
โ โโโ aleam.h
โ
โโโ tests/
โ โโโ test_core.py
โ โโโ test_ai.py
โ โโโ test_statistical.py
โ
โโโ benchmarks/
โ โโโ benchmark_core.py
โ
โโโ assets/
โ โโโ images/
โ โโโ benchmarks/
โ โ โโโ aleam_gpu_vs_lavarand_hd.png
โ โ โโโ cpu_vs_gpu.png
โ โโโ diagrams/
โ โโโ algorithm.png
โ
โ
โโโ examples/
โ โโโ basic_usage.py
โ โโโ ai_ml_features.py
โ โโโ array_operations.py
โ โโโ distributions.py
โ โโโ monte_carlo_pi.py
โ โโโ reinforcement_learning.py
โ โโโ cuda_integration.py
โ โโโ pytorch_integration.py
โ โโโ tensorflow_integration.py
โ
โโโ docs/
โ โโโ ALEAM_RESEARCH_PAPER.md
โ โโโ index.md
โ
โโโ setup.py
โโโ pyproject.toml
โโโ MANIFEST.in
โโโ requirements.txt
โโโ requirements-dev.txt
โโโ LICENSE
โโโ README.md
โโโ CONTRIBUTING.md
โโโ .gitignore
๐ง Troubleshooting
Q: Why is Aleam slower than random.random on CPU?
A: True randomness is slower than pseudo-random with the C++ core โ that's expected. You're trading speed for genuine entropy. On GPU, Aleam achieves massive parallel performance.
Q: Can I seed Aleam for reproducible results?
A: No. Aleam is stateless by design. Call al.seed_free() to see the explanation. Use Python's random module if you need reproducibility.
Q: Is Aleam cryptographically secure?
A: Yes. Each call consumes 64 bits of true entropy and passes through BLAKE2s, a cryptographic hash.
Q: Does Aleam support GPU?
A: Yes! PyTorch, TensorFlow, JAX, and CuPy integrations all support GPU acceleration. Use al.CUDAGenerator() for automatic backend detection.
Q: Why does sample() require a list?
A: The C++ bindings accept Python lists directly. Use list(range(10000)) instead of range(10000).
Q: Will Aleam work on my platform?
A: Yes! Linux (getrandom), Windows (BCrypt), and macOS (arc4random) are all supported.
๐ Responsible Use
- โ Use for AI research, exploration, and creative projects
- โ Use for scientific simulations requiring true randomness
- โ Use for cryptographic applications
- โ Do not use for security-critical systems without additional entropy sources
- โ Do not use to generate deceptive or harmful content
๐ License
MIT License โ see LICENSE for details.
| Component | License |
|---|---|
| Aleam Interface | MIT |
| Core Algorithm | MIT |
| BLAKE2s | Public Domain / CC0 |
๐ Links
| ๐ฆ PyPI | pypi.org/project/aleam |
| ๐ Issues | GitHub Issues |
| ๐ Documentation | GitHub Docs |
| ๐ Research Paper | ALEAM_RESEARCH_PAPER.md |
๐ Acknowledgments
- BLAKE2 team for the cryptographic hash function
- Open-source community for entropy source implementations
- Python community for the amazing ecosystem
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aleam-1.0.3-py3-none-any.whl.
File metadata
- Download URL: aleam-1.0.3-py3-none-any.whl
- Upload date:
- Size: 3.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5b2814355d662b2fb4199141b528b4a92d35458ca35f10008be64b1ae016258
|
|
| MD5 |
7ede9d25779495d35cc8ab7949dd15c7
|
|
| BLAKE2b-256 |
3d5b028e274c26bf8ead380dbeff8c5352c512788d9eb775300a0de8c3cc6761
|
File details
Details for the file aleam-1.0.3-cp312-cp312-manylinux2014_x86_64.whl.
File metadata
- Download URL: aleam-1.0.3-cp312-cp312-manylinux2014_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
626feeae03dad83b76e406d9f7993fc70bbaa7fde74fd1c7c47af77c8bc93075
|
|
| MD5 |
b48e6348d77b44a4e1a7efae736b079b
|
|
| BLAKE2b-256 |
baf3f3d562859b4d2db097726d9ce370789bb15d0c405527651e026851b68a3f
|
File details
Details for the file aleam-1.0.3-cp312-cp312-manylinux2014_aarch64.whl.
File metadata
- Download URL: aleam-1.0.3-cp312-cp312-manylinux2014_aarch64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0804decb968effb0c545ce8e42534da68a4d246b965ba647b3b455e5db67957
|
|
| MD5 |
6b611f6b17a35f45fa379bb8212bc866
|
|
| BLAKE2b-256 |
1eead705212f32552de2c84e58895b6a36c255617f1702a98f15931856ebc604
|
File details
Details for the file aleam-1.0.3-cp312-cp312-macosx_10_13_universal2.whl.
File metadata
- Download URL: aleam-1.0.3-cp312-cp312-macosx_10_13_universal2.whl
- Upload date:
- Size: 423.7 kB
- Tags: CPython 3.12, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
930c4e8907189f159f68684d85fbd151e9c1a2175f6387bbcd38b42cf48a98de
|
|
| MD5 |
3f8a8ced9d36243335cda0dc83d5515f
|
|
| BLAKE2b-256 |
ac4869856c826f1e6f2d0f5f6292c625c5660ded63a6d2f52fe723efd8d17378
|