faqts : Computers : Programming : Languages : Tse : Math

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

2 of 3 people (67%) answered Yes
Recently 2 of 3 people (67%) answered Yes

Entry

TSE: Random: Number: Generator: Create: How to: How to create a random number generator?

Feb 1st, 2005 04:04
Knud van Eeden,


----------------------------------------------------------------------
--- Knud van Eeden --- 03 October 2004 - 06:22 pm --------------------

TSE: Random: Number: Generator: Create: How to: How to create a random 
number generator?

---

--- cut here: begin --------------------------------------------------

 // from a source code example of Sammy Mitchell

 PROC PROCMathSetNumberRandomSeed( INTEGER multiplierI )
  INTEGER hourI = 0
  INTEGER minuteI = 0
  INTEGER secondI = 0
  INTEGER hundredI = 0
  IF ( multiplierI == 0 )
   // Randomize using system clock
   GetTime( hourI, minuteI, secondI, hundredI )
   multiplierI = secondI * 100 + hundredI
   multiplierI = multiplierI * 0ffffh / 5999
  ELSE
   // Must NOT be greater than 0ffffh
   multiplierI = multiplierI & 0ffffh
  ENDIF
  // Add 1 IF even TO make it odd
  multiplierI = multiplierI | 1
  SetGlobalInt( "randproc_multiplier", multiplierI )
 END
 //
 INTEGER PROC FNMathGetNumberRandomI()
  INTEGER seedI = 37584381
  INTEGER multiplierI = GetGlobalInt( "randproc_multiplier" )
  INTEGER resultI = 0
  resultI = seedI * multiplierI
  multiplierI = resultI & 0ffffh
  SetGlobalInt( "randproc_multiplier", multiplierI )
  resultI = resultI & 0ffff00h
  resultI = resultI SHR 8
  RETURN( resultI )
 END

 PROC Main()
  INTEGER I = 0
  PROCMathSetNumberRandomSeed( 0 )
  REPEAT
   I = FNMathGetNumberRandomI()
   Warn( "random number in range between 0 and 10 = ", I MOD 10 )
   Warn( "random number in range between 0 and 100 = ", I MOD 100 )
   Warn( "random number in range between 0 and 1000 = ", I MOD 1000 )
   Warn( "random number in range between 0 and 10000 = ", I MOD 10000 )
   Warn( "random number in range between 0 and 100000 = ", I )
  UNTIL FALSE
 END

 <F12> Main()

--- cut here: end ----------------------------------------------------

---
---

Internet: see also:

---

Math: Number: Random: Link: Overview: Can you give an overview of
links about random numbers?
http://www.faqts.com/knowledge_base/view.phtml/aid/31689/fid/1712

---

CryptGenRandom
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/seccrypto/security/cryptgenrandom.asp

----------------------------------------------------------------------