Article: Q32100
Product(s): See article
Version(s): 4.00 4.00b 4.50
Operating System(s): MS-DOS
Keyword(s): ENDUSER | buglist4.00 buglist4.00b fixlist4.50 B_BasicCom | mspl13_basic
Last Modified: 8-DEC-1989
The RANDOMIZE statement gives different results inside the QuickBASIC
(QB.EXE) environment from the results it gives in an executable file
(.EXE) using the same seed. This difference poses a problem for
software developers using the QB.EXE environment who depend upon a
given seed for the RANDOMIZE statement to make the RND function return
the same series of random numbers as a compiled .EXE program.
Microsoft has confirmed this to be a problem in QuickBASIC Versions
4.00 and 4.00b, and in the Microsoft BASIC Compiler Version 6.00 for
MS-DOS and MS OS/2 (buglist6.00). This problem has been corrected in
QuickBASIC Version 4.50 and in the Microsoft BASIC Compiler Version
7.00 (fixlist7.00).
This problem does not occur in QuickBASIC Version 3.00; the results
obtained from within the QuickBASIC Version 3.00 environment and the
results from the executable program are the same. Note: The differing
random-number series using the same seed between QuickBASIC Version
3.00 and Version 4.00 is expected and is not considered to be a
problem.
When a program is executed several times (with the same seed for the
RANDOMIZE statement) from a given environment, the RND function
returns the same number series every time (in all versions of
Microsoft BASIC), which is expected behavior.
The following code demonstrates the problem:
RANDOMIZE 1000
FOR i = 1 TO 10
PRINT INT(RND * 10) + 1
NEXT i
END
The following are the results (every time) when executed from inside
the QuickBASIC Version 4.00b QB.EXE editor:
7
2
4
3
2
5
1
5
4
7
The following are the results (every time) when executed from the .EXE
file created by QuickBASIC Version 4.00b:
8
5
7
6
2
10
3
4
7
8
The following are the results (every time) when executed from
QuickBASIC Version 3.00 or an executable file compiled in Version
3.00:
10
7
10
4
3
4
10
1
3
4