Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



48 Commits

Repository files navigation


Build status crates badge Documentation License


This is a port of the PCG random number generation libary, made for C and C++, to Rust.

The library implements the RngCore trait, which automatically implements the Rng trait, providing a standard interface to generate and sample random numbers.

Note: with the 1.0.0 release of pcg-rs, the old sampling methods have been deprecated, please use the sampling methods implemented via the Rng trait instead.


This crate offers no_std compatibility through the std feature. It is enabled by default, but if you want to use no_std, you can add the package like this:

version = "4.0"
default-features = false

This crate also has optional support for serde, which you can enable as a feature:

version = "4.0"
features = ["std", "serde"]

Example Usage

use rand::prelude::*;
use pcg::Pcg;

// Initialize the default PCG rng state
let mut rng = Pcg::default();

// Generate some boolean using the standard `gen()` method, which generates the
// appropriate type with type inference
let random_bool: bool = rng.gen();