Skip to content
PCG — Minimal C Implementation
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Makefile Add README content. Oct 17, 2014
pcg32-global-demo.c Add project files. Oct 17, 2014
pcg32x2-demo.c Add project files. Oct 17, 2014
pcg_basic.c Add project files. Oct 17, 2014
pcg_basic.h Add project files. Oct 17, 2014

PCG Random Number Generation, Minimal C Edition

This code provides a minimal implementation of one member of the PCG family of random number generators, which are fast, statistically excellent, and offer a number of useful features.

Full details can be found at the PCG-Random website. This version of the code provides a single family member and skips some useful features (such as jump-ahead/jump-back) -- if you want a more full-featured library, you may prefer the full version of the C library, or for all features, the C++ library.

Documentation and Examples

Visit PCG-Random website for information on how to use this library, or look at the sample code -- hopefully it should be fairly self explanatory.


There is no library to build. Just use the code. You can however build the three demo programs.

The code is written in C89-style C with no significant platform dependencies. On a Unix-style system (e.g., Linux, Mac OS X), or any system with make, you should be able to just type type


Almost all the real code is in pcg_basic.c, with type and function declarations in pcg_basic.h.

On other systems, it should be straightforward to build. For example, you even run the code directly using the tinycc compiler, using

cat pcg_basic.c pcg32-demo.c | tcc -run


This command will build the three provided demo programs, pcg32-global-demo (which uses the global rng), pcg32-demo (which uses a local generator), and pcg32x2-demo (which gangs together two generators, showing the usefulness of creating multiple generators).

To run the demos using a fixed seed (same output every time), run


To produce different output, run

./pcg32-demo -r

You can also pass an integer count to specify how may rounds of output you would like.

You can’t perform that action at this time.