1\" Copyright (c) 1993 Martin Birgmeier 2.\" All rights reserved. 3.\" 4.\" You may redistribute unmodified or modified versions of this source 5.\" code provided that the above copyright notice and this and the 6.\" following conditions are retained. 7.\" 8.\" This software is provided ``as is'', and comes with no warranties 9.\" of any kind. I shall in no event be liable for anything that happens 10.\" to anyone/anything when using this software. 11.\" 12.\" @(#)rand48.3 V1.0 MB 8 Oct 1993 |
13.\" $FreeBSD: head/lib/libc/gen/rand48.3 57686 2000-03-02 09:14:21Z sheldonh $ |
14.\" 15.Dd October 8, 1993 16.Dt RAND48 3 17.Os FreeBSD 18.Sh NAME 19.Nm drand48 , 20.Nm erand48 , 21.Nm lrand48 , --- 23 unchanged lines hidden (view full) --- 45.Ft "unsigned short *" 46.Fn seed48 "unsigned short xseed[3]" 47.Ft void 48.Fn lcong48 "unsigned short p[7]" 49.Sh DESCRIPTION 50The 51.Fn rand48 52family of functions generates pseudo-random numbers using a linear |
53congruential algorithm working on integers 48 bits in size. 54The |
55particular formula employed is 56r(n+1) = (a * r(n) + c) mod m 57where the default values are 58for the multiplicand a = 0xfdeece66d = 25214903917 and 59the addend c = 0xb = 11. The modulo is always fixed at m = 2 ** 48. 60r(n) is called the seed of the random number generator. 61.Pp 62For all the six generator routines described next, the first 63computational step is to perform a single iteration of the algorithm. 64.Pp 65.Fn drand48 66and 67.Fn erand48 |
68return values of type double. 69The full 48 bits of r(n+1) are |
70loaded into the mantissa of the returned value, with the exponent set 71such that the values produced lie in the interval [0.0, 1.0). 72.Pp 73.Fn lrand48 74and 75.Fn nrand48 76return values of type long in the range 77[0, 2**31-1]. The high-order (31) bits of --- 38 unchanged lines hidden (view full) --- 116.Pp 117.Fn seed48 118also initializes the internal buffer r(n) of 119.Fn drand48 , 120.Fn lrand48 , 121and 122.Fn mrand48 , 123but here all 48 bits of the seed can be specified in an array of 3 shorts, |
124where the zeroth member specifies the lowest bits. 125Again, |
126the constant multiplicand and addend of the algorithm are 127reset to the default values given above. 128.Fn seed48 129returns a pointer to an array of 3 shorts which contains the old seed. 130This array is statically allocated, thus its contents are lost after 131each new call to 132.Fn seed48 . 133.Pp --- 31 unchanged lines hidden --- |