The following warnings occurred:
Warning [2] Undefined array key 0 - Line: 1677 - File: showthread.php PHP 8.2.31 (Linux)
File Line Function
/inc/class_error.php 157 errorHandler->error
/showthread.php 1677 errorHandler->error_callback
/showthread.php 916 buildtree




Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Inconsistency in RND
#1
If I write this simple program:
Code:
DIM u as UBYTE 10 let u =rnd*40 print u pause 0 if code inkey$=13 then stop 40 goto 10
a number between 0 and 40 will be shown at every pressing of ENTER.

However, inside of a larger program, this instruction:
Code:
DIM x AS UBYTE ... x = rnd*40
always returns 38 when executed.

Also, the RND of the first example always returns exactly the same sequence when started afresh, at least under emulation (Spectaculator): 9, 34, 15, 7, 16, 25, 13, 37, 7, 24, 19 etc.

In the past I used a simple routine (by John Connolly) to generate random numbers. Here it is, modified to let it return values from 0 to 31:
Code:
LD A,R AND %00011111 LD (address),A
When placed in a ZX-Basic listing as a subroutine, it will always return the first value. The only way to make it work is to assemble it elsewhere and call it from within ZX-BASIC with the usual RANDOMIZE USR call, then assign the PEEK [address] to a variable.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)