Combined Linear Congruential Generator combines outputs from multiple LCG instances to produce better statistical properties than a single LCG. Developed by Pierre L’Ecuyer in 1988, the combination methods (additive, subtractive, multiplicative, XOR) significantly extend the period and improve randomness quality.
| Property | Value |
|---|---|
| Category | Random Number Generators |
| Sub-category | Pseudorandom Number Generator |
| Security status | 🎓 Educational Only |
| Complexity | Intermediate |
| Inventor | Pierre L’Ecuyer |
| Year | 1988 |
| Origin | 🇨🇦 Canada |
| Source | algorithms/random/combined-lcg.js |
| Parameter | Supported values |
|---|---|
| Seed sizes | 1 byte (8 bits) to 32 bytes (256 bits) |
| Flag | Value |
|---|---|
IsDeterministic |
Yes |
IsCryptographicallySecure |
No |
Status: 🎓 Educational Only
No vulnerabilities are recorded for this implementation.
5 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — Default PCG parameters, Additive mode, seed=1 - First 5 values
| Field | Value |
|---|---|
seed |
0000000000000001 |
combinationMode |
0 |
lcg1Multiplier |
5851f42d4c957f2d |
lcg1Increment |
14057b7ef767814f |
lcg1Modulo |
00 |
lcg2Multiplier |
369dea0f31a53f85 |
lcg2Increment |
255992d382208b61 |
lcg2Modulo |
00 |
outputSize |
40 |
input |
null |
expected |
618049f4081c4420659a51615ac96cb0 c55ee230c7bb90d8d13ac8e8fa053618 925b372afca62170 |
Vector 2 — Default PCG parameters, XOR mode, seed=42 - First 5 values
| Field | Value |
|---|---|
seed |
000000000000002a |
combinationMode |
3 |
lcg1Multiplier |
5851f42d4c957f2d |
lcg1Increment |
14057b7ef767814f |
lcg1Modulo |
00 |
lcg2Multiplier |
369dea0f31a53f85 |
lcg2Increment |
255992d382208b61 |
lcg2Modulo |
00 |
outputSize |
40 |
input |
null |
expected |
079c9839b884a2704981dc493c664dde 2ed1bfec97391484183722416c6399f6 3ed118fd21a09238 |
Vector 3 — L’Ecuyer 1988 32-bit parameters, Additive mode, seed=12345 - First 5 values
| Field | Value |
|---|---|
seed |
0000000000003039 |
combinationMode |
0 |
lcg1Multiplier |
00009c4e |
lcg1Increment |
00000000 |
lcg1Modulo |
7fffffab |
lcg2Multiplier |
00009ef4 |
lcg2Increment |
00000000 |
lcg2Modulo |
7fffff07 |
outputSize |
40 |
input |
null |
expected |
000000006265368c000000005fa82458 0000000039fd3bd5000000005bf0874e 0000000075a84d5d |
Vector 4 — Subtractive mode test, seed=1 - First 5 values
| Field | Value |
|---|---|
seed |
0000000000000001 |
combinationMode |
1 |
lcg1Multiplier |
5851f42d4c957f2d |
lcg1Increment |
14057b7ef767814f |
lcg1Modulo |
00 |
lcg2Multiplier |
369dea0f31a53f85 |
lcg2Increment |
255992d382208b61 |
lcg2Modulo |
00 |
outputSize |
40 |
input |
null |
expected |
d226e9cefa38d85898c47e2167f31f06 7017c59a44754ac45cf94be0781ecaf2 97c52ce171d305f0 |
Vector 5 — Multiplicative mode test, seed=100 - First 5 values
| Field | Value |
|---|---|
seed |
0000000000000064 |
combinationMode |
2 |
lcg1Multiplier |
5851f42d4c957f2d |
lcg1Increment |
14057b7ef767814f |
lcg1Modulo |
00 |
lcg2Multiplier |
369dea0f31a53f85 |
lcg2Increment |
255992d382208b61 |
lcg2Modulo |
00 |
outputSize |
40 |
input |
null |
expected |
240f6b8a133e41bff80401a36365d6dc 879fb6afb278c5d7d2ec230014f07200 c6c06de607e40507 |