Search the web
Sign In
New User? Sign Up
blassic · Blassic, the Classic Basic.
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Real people. Real stories. See how Yahoo! Groups impacts members worldwide.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Random number question?   Message List  
Reply | Forward Message #48 of 233 |
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/Blassic 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

Blassic users should change Line 20 to read:

20 RANDOMIZE

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 Panks
dunric@...




Mon Jun 21, 2004 6:26 am

dunric
Offline Offline
Send Email Send Email

Forward
Message #48 of 233 |
Expand Messages Author Sort by Date

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...
Paul
dunric
Offline Send Email
Jun 21, 2004
6:26 am

Hello. ... That is not the way randomize must be used. You must call randomize once, at the beginnig of the program, and then use only RND. RANDMOIZE...
not_found_blassic
not_found_bl...
Offline Send Email
Jun 29, 2004
8:55 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help