Random number question?
From: Paul Allen Panks (panks_at_sdf.lonestar.org)
Date: 06/21/04
- Next message: Betov: "Re: RosAsm jut got a 3X Speedup !!!"
- Previous message: Annie: "Re: Customizable expansion to HLA"
- Next in thread: T.M. Sommers: "Re: Random number question?"
- Reply: T.M. Sommers: "Re: Random number question?"
- Reply: Randall Hyde: "Re: Random number question?"
- Reply: Dunny: "Re: Random number question?"
- Reply: wolfgang kern: "Re: Random number question?"
- Reply: Sulaiman Chang: "Re: Random number question?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Next message: Betov: "Re: RosAsm jut got a 3X Speedup !!!"
- Previous message: Annie: "Re: Customizable expansion to HLA"
- Next in thread: T.M. Sommers: "Re: Random number question?"
- Reply: T.M. Sommers: "Re: Random number question?"
- Reply: Randall Hyde: "Re: Random number question?"
- Reply: Dunny: "Re: Random number question?"
- Reply: wolfgang kern: "Re: Random number question?"
- Reply: Sulaiman Chang: "Re: Random number question?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|