Recent

Author Topic: How works Random intern?  (Read 1136 times)

coradi

  • Full Member
  • ***
  • Posts: 148
How works Random intern?
« on: January 18, 2019, 10:13:54 pm »
How works the Random function?
Is it the same system as srand() from C?
Amstrad Schneider CPC 6128
AVR8/ARM(STM32)

jamie

  • Hero Member
  • *****
  • Posts: 6128
Re: How works Random intern?
« Reply #1 on: January 18, 2019, 10:53:02 pm »
srand  in C is not Random in pascal.

Srand in C is RandSeed in Pascal


Random will return any number from 0 to the number you input.

if you call Random without any number then it assumes the value 1.0 and there for the return
value will be any number starting from 0 to .99999999

 So you could use that to multiply a REAL number

 Result := 10000 * Random;

 That will return a number between 0..9.999; and it will come with fractons for example
   3.56789 etc

If you supply a number that is not a REAL then it becomes a integer type on return..

 Random(100) will return any number from 0 to 99

The only true wisdom is knowing you know nothing

furious programming

  • Hero Member
  • *****
  • Posts: 858
Re: How works Random intern?
« Reply #2 on: January 18, 2019, 11:59:00 pm »
You can check how Random works, just use the Find declaration option and analyze the code of the genrand_MT19937 function. It is used by every Random function, no matter what data type returns.
« Last Edit: January 19, 2019, 12:01:15 am by furious programming »
Lazarus 3.2 with FPC 3.2.2, Windows 10 — all 64-bit

Working solo on an acrade, action/adventure game in retro style (pixelart), programming the engine and shell from scratch, using Free Pascal and SDL. Release planned in 2026.

 

TinyPortal © 2005-2018