From eb8dd9dca1228af0cd132f515509051ecfabf6f6 Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Mon, 14 Apr 2025 17:32:06 +0000 Subject: This commit was manufactured by cvs2git to create tag 'tb_20250414'. --- src/lib/libc/stdlib/rand48.3 | 240 ------------------------------------------- 1 file changed, 240 deletions(-) delete mode 100644 src/lib/libc/stdlib/rand48.3 (limited to 'src/lib/libc/stdlib/rand48.3') diff --git a/src/lib/libc/stdlib/rand48.3 b/src/lib/libc/stdlib/rand48.3 deleted file mode 100644 index fa7a7179bc..0000000000 --- a/src/lib/libc/stdlib/rand48.3 +++ /dev/null @@ -1,240 +0,0 @@ -.\" Copyright (c) 1993 Martin Birgmeier -.\" All rights reserved. -.\" -.\" You may redistribute unmodified or modified versions of this source -.\" code provided that the above copyright notice and this and the -.\" following conditions are retained. -.\" -.\" This software is provided ``as is'', and comes with no warranties -.\" of any kind. I shall in no event be liable for anything that happens -.\" to anyone/anything when using this software. -.\" -.\" $OpenBSD: rand48.3,v 1.21 2019/12/20 19:16:40 tb Exp $ -.\" -.Dd $Mdocdate: December 20 2019 $ -.Dt DRAND48 3 -.Os -.Sh NAME -.Nm drand48 , -.Nm erand48 , -.Nm lrand48 , -.Nm nrand48 , -.Nm mrand48 , -.Nm jrand48 , -.Nm srand48 , -.Nm srand48_deterministic , -.Nm seed48 , -.Nm seed48_deterministic , -.Nm lcong48 , -.Nm lcong48_deterministic -.Nd pseudo-random number generators and initialization routines -.Sh SYNOPSIS -.In stdlib.h -.Ft double -.Fn drand48 void -.Ft double -.Fn erand48 "unsigned short xseed[3]" -.Ft long -.Fn lrand48 void -.Ft long -.Fn nrand48 "unsigned short xseed[3]" -.Ft long -.Fn mrand48 void -.Ft long -.Fn jrand48 "unsigned short xseed[3]" -.Ft void -.Fn srand48 "long seed" -.Ft void -.Fn srand48_deterministic "long seed" -.Ft "unsigned short *" -.Fn seed48 "unsigned short xseed[3]" -.Ft "unsigned short *" -.Fn seed48_deterministic "unsigned short xseed[3]" -.Ft void -.Fn lcong48 "unsigned short p[7]" -.Ft void -.Fn lcong48_deterministic "unsigned short p[7]" -.Sh DESCRIPTION -.Bf -symbolic -Standards insist that this interface return deterministic results. -Unsafe usage is very common, so -.Ox -changed the subsystem to return non-deterministic results by default. -.Ef -.Pp -To satisfy portable code, -.Fn srand48 , -.Fn seed48 , -or -.Fn lcong48 -should be called to initialize the subsystem. -In -.Ox -the -seeding parameters are ignored, and strong random number results will be -provided from -.Xr arc4random 3 . -In other systems, the -parameters prime a simplistic deterministic algorithm. -.Pp -If the standardized behavior is required then -.Fn srand48_deterministic , -.Fn seed48_deterministic , -and -.Fn lcong48_deterministic -can be substituted for -.Fn srand48 , -.Fn seed48 , -and -.Fn lcong48 . -That will cause subsequent -calls to -.Fn drand48 , -.Fn lrand48 , -and -.Fn jrand48 -to return results using the deterministic algorithm. -.Pp -.Fn drand48 -and -.Fn erand48 -return values of type double. -The full 48 bits of r(n+1) are -loaded into the mantissa of the returned value, with the exponent set -such that the values produced lie in the interval [0.0, 1.0). -.Pp -.Fn lrand48 -and -.Fn nrand48 -return values of type long in the range -[0, 2**31-1]. -The high-order (31) bits of -r(n+1) are loaded into the lower bits of the returned value, with -the topmost (sign) bit set to zero. -.Pp -.Fn mrand48 -and -.Fn jrand48 -return values of type long in the range -[-2**31, 2**31-1]. -The high-order (32) bits of r(n+1) are loaded into the returned value. -.Pp -In the deterministic mode, the -.Fn rand48 -family of functions generates numbers using a linear congruential -algorithm working on integers 48 bits in size. -The particular formula employed is -r(n+1) = (a * r(n) + c) mod m -where the default values are -for the multiplicand a = 0xfdeece66d = 25214903917 and -the addend c = 0xb = 11. -The modulus is always fixed at m = 2 ** 48. -r(n) is called the seed of the random number generator. -.Pp -For all the six generator routines described next, the first -computational step is to perform a single iteration of the algorithm. -.Pp -.Fn drand48 , -.Fn lrand48 , -and -.Fn mrand48 -use an internal buffer to store r(n). -For these functions -the initial value of r(0) = 0x1234abcd330e = 20017429951246. -.Pp -On the other hand, -.Fn erand48 , -.Fn nrand48 , -and -.Fn jrand48 -use a user-supplied buffer to store the seed r(n), -which consists of an array of 3 shorts, where the zeroth member -holds the least significant bits. -.Pp -All functions share the same multiplicand and addend. -.Pp -.Fn srand48_deterministic -is used to initialize the internal buffer r(n) of -.Fn drand48 , -.Fn lrand48 , -and -.Fn mrand48 -such that the 32 bits of the seed value are copied into the upper 32 bits -of r(n), with the lower 16 bits of r(n) arbitrarily being set to 0x330e. -Additionally, the constant multiplicand and addend of the algorithm are -reset to the default values given above. -.Pp -.Fn seed48_deterministic -also initializes the internal buffer r(n) of -.Fn drand48 , -.Fn lrand48 , -and -.Fn mrand48 , -but here all 48 bits of the seed can be specified in an array of 3 shorts, -where the zeroth member specifies the lowest bits. -Again, the constant multiplicand and addend of the algorithm are -reset to the default values given above. -.Fn seed48_deterministic -returns a pointer to an array of 3 shorts which contains the old seed. -This array is statically allocated, so its contents are lost after -each new call to -.Fn seed48_deterministic . -.Pp -Finally, -.Fn lcong48_deterministic -allows full control over the multiplicand and addend used in -.Fn drand48 , -.Fn erand48 , -.Fn lrand48 , -.Fn nrand48 , -.Fn mrand48 , -and -.Fn jrand48 , -and the seed used in -.Fn drand48 , -.Fn lrand48 , -and -.Fn mrand48 . -An array of 7 shorts is passed as parameter; the first three shorts are -used to initialize the seed; the second three are used to initialize the -multiplicand; and the last short is used to initialize the addend. -It is thus not possible to use values greater than 0xffff as the addend. -.Pp -Note that all three methods of seeding the random number generator -always also set the multiplicand and addend for any of the six -generator calls. -.Sh SEE ALSO -.Xr arc4random 3 , -.Xr rand 3 , -.Xr random 3 -.Sh STANDARDS -The -.Fn drand48 , -.Fn erand48 , -.Fn jrand48 , -.Fn lrand48 , -.Fn mrand48 , -and -.Fn nrand48 , -functions conform to -.St -p1003.1-2008 . -.Pp -The -.Fn seed48 , -.Fn srand48 , -and -.Fn lcong48 -function do not conform to -.St -ansiC , -intentionally. -.Pp -The -.Fn seed48_deterministic , -.Fn srand48_deterministic , -and -.Fn lcong48_deterministic -functions are -.Ox -extensions. -.Sh AUTHORS -.An Martin Birgmeier -- cgit v1.2.3-55-g6feb