**[**Back to MISC SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**

```
===========================================================================
BBS: Canada Remote Systems
Date: 06-18-93 (23:27) Number: 26893
From: KENT BRIGGS Refer#: NONE
```**To**: BRIAN PAPE Recvd: NO
Subj: RANDOM NUMBERS Conf: (1221) F-**PASCAL
**---------------------------------------------------------------------------
-=> Quoting Brian Pape **to **Erik Johnson <=-
BP> Please- I *am* looking **for **the source code **to **a decent random number
BP> generator so that I'm not dependant on Borland.
Brian, Borland did change their random:word **function **when they released
7.0. However the random:real **function**, the randomize **procedure**, **and **their
method **of **updating randseed remain the same **as **ver 6.0. Using DJ Murdoch's
CycleRandseed **procedure and **reverse engineering TP6's and TP7's Random
functions, I came up **with **the following routines:
**const **rseed: longint = 0;
**procedure **randomize67; *{TP 6.0 & 7.0 seed generator}
***begin
**reg.ah:=$2c;
msdos(reg); *{get time: ch=hour,cl=min,dh=sec,dl=sec/100}
*rseed:=reg.dx;
rseed:=(rseed **shl **16) **or **reg.cx;
**end**;
**function **rand_word6(x: word): word; *{TP 6.0 RNG: word}
***begin
**rseed:=rseed*134775813+1;
rand_word6:=(rseed **shr **16) **mod **x;
**end**;
**function **rand_word7(x: word): word; *{TP 7.0 RNG: word}
***begin
**rseed:=rseed*134775813+1;
rand_word7:=((rseed **shr **16)*x+((rseed **and **$ffff)*x **shr **16)) **shr **16;
**end**;
**function **rand_real67: real; *{TP 6.0 & 7.0 RNG: real}
***begin
**rseed:=rseed*134775813+1;
**if **rseed<0 **then **rand_real67:=rseed/4294967296.0+1.0 **else
**rand_real67:=rseed/4294967296.0;
**end**;
**If **anyone can improve **on **these please post some code here, thanks.
___ Blue Wave/QWK v2.12
--- Renegade v06-11 Beta
* Origin: Snipe's Castle BBS, Waco TX (817)-757-0169 (1:388/26)

**[**Back to MISC SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**