#numbers #generator #rand #instructions #amd #architecture #rdseed

no-std rdrand

An implementation of random number generator based on rdrand and rdseed instructions

25 releases

0.8.3 Dec 17, 2023
0.8.2 Apr 16, 2022
0.8.1 Oct 3, 2021
0.8.0 Apr 10, 2021
0.0.4 Dec 21, 2014

#34 in Hardware support

Download history 109604/week @ 2024-02-12 90316/week @ 2024-02-19 111354/week @ 2024-02-26 107782/week @ 2024-03-04 103648/week @ 2024-03-11 112408/week @ 2024-03-18 123628/week @ 2024-03-25 130750/week @ 2024-04-01 134530/week @ 2024-04-08 128558/week @ 2024-04-15 133729/week @ 2024-04-22 126498/week @ 2024-04-29 117362/week @ 2024-05-06 139110/week @ 2024-05-13 135903/week @ 2024-05-20 124654/week @ 2024-05-27

521,433 downloads per month
Used in 5,194 crates (6 directly)

ISC license

30KB
455 lines

An implementation of random number generators based on rdrand and rdseed instructions.

The random number generators provided by this crate are fairly slow (the latency for these instructions is pretty high), but provide high quality random bits. Caveat is: neither AMD’s nor Intel’s designs are public and therefore are not verifiable for lack of backdoors.

Unless you know what you are doing, use the random number generators provided by the rand crate (such as OsRng) instead.

Here are a measurements for select processor architectures. Check Agner’s instruction tables for up-to-date listings.

Architecture Latency (cycles) Maximum throughput (per core)
u16 u32 u64
AMD Ryzen ~1200 ~1200 ~2500 ~12MB/s @ 3.7GHz
Intel Skylake 460 460 460 ~72MB/s @ 4.2GHz
Intel Haswell 320 320 320 ~110MB/s @ 4.4GHz

Dependencies

~165KB