drand48

Nim implementation of the standard unix drand48 pseudo random number generator

Pure Nim score 30/100 · tests present · docs generated

Summary

Latest Version Unknown
License BSD3
CI Status Passing
Downloads 0
Last Indexed 2026-07-21 05:24

Installation

nimble install drand48
choosenim install drand48
git clone https://github.com/JeffersonLab/drand48

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
drand48 - - - - - - -

Source

Repository https://github.com/JeffersonLab/drand48
Homepage https://github.com/JeffersonLab/drand48
Documentation View Documentation
Registry Source nimble_official

README

Drand48 Build Status

Nim implementation of the standard unix drand48 pseudo random number generator.

All the routines work by generating a sequence of 48-bit integer values, Xi , according to the linear congruential formula:

Xn+1 = (aXn + c) mod m n>= 0

The parameter m = 248; hence 48-bit integer arithmetic is performed. The multiplier value a and the addend value c are given by:

a = 0x5DEECE66D = 0c273673163155 c = 0xB = oc13

The value returned by any of the drand48() is computed by first generating the next 48-bit Xi in the sequence. Then the appropriate number of bits, according to the type of data item to be returned, are copied from the high-order (leftmost) bits of Xi and transformed into the returned value.

The drand48() function stores the last 48-bit Xi generated in an internal buffer; that is why they must be initialised prior to being invoked.

The initializer function srand48() sets the high-order 32 bits of Xi to the low-order 32 bits contained in its argument. The low-order 16 bits of Xi are set to the arbitrary value 0x330E .

The initializer function seed48() sets the value of Xi to the 48-bit value specified in the argument array. The seed can be set with the 48-bit seed split into four 12-bit chunks, or as a 48-bit int.

There are functions savern12() and savern48() that returns the current random number seed.