WELL (Well Equidistributed Long-period Linear) is a family of pseudo-random number generators designed to improve upon Mersenne Twister’s equidistribution properties. WELL512a has a period of 2^512-1 and better performance in statistical tests.
| Property | Value |
|---|---|
| Category | Random Number Generators |
| Sub-category | Deterministic PRNG |
| Security status | 🎓 Educational Only |
| Complexity | Intermediate |
| Inventor | François Panneton, Pierre L’Ecuyer, Makoto Matsumoto |
| Year | 2006 |
| Origin | 🇨🇦 Canada |
| Source | algorithms/random/well.js |
| Parameter | Supported values |
|---|---|
| Seed sizes | 1 byte (8 bits) to 128 bytes (1024 bits) |
| Flag | Value |
|---|---|
IsDeterministic |
Yes |
IsCryptographicallySecure |
No |
Status: 🎓 Educational Only
No vulnerabilities are recorded for this implementation.
4 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — WELL512a with seed 0: First 10 outputs (32-bit values)
| Field | Value |
|---|---|
seed |
0000000000000000 |
outputSize |
40 |
input |
null |
expected |
87444164a8607ff9624d61346854fe55 7283578efd970258c78bac851a0fe687 48935f9b5c57c8f9 |
Vector 2 — WELL512a with seed 1: First 10 outputs
| Field | Value |
|---|---|
seed |
0000000000000001 |
outputSize |
40 |
input |
null |
expected |
c7798c5c7229bbe39682a4ffc440c989 053f46bfdd305a688e2be560d398fc58 739f16364958d47e |
Vector 3 — WELL512a with seed 42: First 8 outputs (common test seed)
| Field | Value |
|---|---|
seed |
000000000000002a |
outputSize |
32 |
input |
null |
expected |
536aad71d41b1b0565f1897e75290c673bf21b5f6a4c54d447944ab981c19822 |
Vector 4 — WELL512a with seed 123456789: First 5 outputs
| Field | Value |
|---|---|
seed |
00000000075bcd15 |
outputSize |
20 |
input |
null |
expected |
6a9c9afe9c8a2699b868fd39f4118aa1dec59614 |