Random number question?

From: Paul Allen Panks (panks_at_sdf.lonestar.org)
Date: 06/21/04


Date: Mon, 21 Jun 2004 06:09:41 +0000 (UTC)

How does HLA's random number generator differ from traditional BASIC's
version? I've long based much of my adventure gaming on random numbers,
especially during player/monster fighting. Does seeding a number truly
make it random, or only quasi-random?

Let's say I have a number between 1 and 35. What guarantee do I have that
the computer won't habitually (or accidentally) pick the same range of
numbers twice? Or the same individual number twice?

To find out, I wrote a simple QBasic program below:

1 CLEAR
5 CLS : PRINT "Random Number test"
10 FOR x = 1 TO 10
20 RANDOMIZE TIMER
30 i = INT(RND * 35) + 1
40 PRINT i
45 NEXT x

The program was run three separate times, with the following results:

Test #1
Random Number test
 27
 25
 17
 31
 24
 18
 27
 34
 23
 22

Test #2
Random Number test
 32
 29
 21
 35
 29
 22
 32
 4
 27
 27

Test #3
Random Number test
 21
 18
 10
 24
 17
 11
 21
 28
 16
 16

Ah oh...the last two tests repeated the last two sets of numbers not once
but TWICE! That's not good!

Now for the same program in HLA:

program random;
#include ("console.hhf");
#include ("stdlib.hhf");
#include ("math.hhf");
static
i:int32:=0;
x:int32:=0;
begin random;
console.cls();
stdout.put("Random number test",nl);
start:
add(1,x);
rand.randomize();
 rand.urange(1,35); // pick a random number, 1 through 35
  mov(eax,i); // move it into i variable
   mov(i,eax); // set i to eax value
  stdout.put(i,nl);
if(x<10) then
 jmp start;
endif;
end random;

The HLA version gives the following 3 results:

Test #1
Random number test
29
24
11
19
22
8
27
33
27
28

Test #2
Random number test
19
4
32
30
23
34
24
20
20
30

Test #3
Random number test
35
26
29
17
26
18
33
29
19
1

Some repeats, but not as bad as before.

Is there a way to truly limit the number of repeats during a set of random
number generation? I can foresee a lot of random numbers in my own mind,
but they have to be truly, truly random for the random number generator to
be doing a good job.

Any ideas as to why both sets of random number generators seem different
in functionality?

Sincerely,

Paul Allen Panks
dunric@gmail.com

-- 
panks@sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org


Relevant Pages

  • Re: Random number question?
    ... > How does HLA's random number generator differ from traditional BASIC's ... Or the same individual number twice? ... > Now for the same program in HLA: ... > Some repeats, but not as bad as before. ...
    (sci.math)
  • Re: Random number question?
    ... > How does HLA's random number generator differ from traditional BASIC's ... definition as they all use an algorithm to compute the next ... Or the same individual number twice? ... Repeats are perfectly reasonable in a random number generator. ...
    (alt.lang.asm)
  • Re: Alan Robinson
    ... Every time I park it after a trip. ... Hitting the STOP button twice at the end ... of the last generator run and then going about your business is a no-brainer. ...
    (rec.outdoors.rv-travel)
  • Re: Once again: 64 bit version of random needed. (Probably 128 bit needed)
    ... Just call the 32 bit one twice and multiply the results. ... generator, ... up heads is 50%. ... Perform bitshifting and OR'ing and you now have an N-bit (pseudo) ...
    (alt.comp.lang.borland-delphi)
  • Re: Random number question?
    ... > How does HLA's random number generator differ from traditional BASIC's ... Or the same individual number twice? ... > Some repeats, but not as bad as before. ... Runs of numbers and other patterns occur far more ...
    (sci.math)

Loading