QB64.com

QB64 is a modern extended BASIC programming language that retains QBasic/QuickBASIC 4.5 compatibility and compiles native binaries for Windows, Linux, and macOS.

RANDOMIZE is used with a seed value to generate different random number sequences using the RND function.

Syntax

RANDOMIZE [USING] *{seednumber* TIMER}**

Example(s)

Using RANDOMIZE TIMER to set a different starting sequence of RND numbers every run.


RANDOMIZE TIMER
DO
randnum% = INT(RND * 11) + 2  'add one to multiplier as INT rounds down and never equals 10
PRINT randnum%
K$ = INPUT$(1)
LOOP UNTIL UCASE$(K$) = "Q"  'q = quit
END 

Explanation: Procedure generates random integer values from 2 to 12 like a pair of dice.

Repeating a random number sequence with RANDOMIZE USING and a specific seed value in QB64 only.


seed = 10
RANDOMIZE seed
Print7
RANDOMIZE seed
Print7
PRINT "Press a key to start sequence over!"
K$ = INPUT$(1) 
RANDOMIZE **USING** seed
Print7

SUB Print7
FOR r = 1 TO 7
  PRINT RND;
NEXT
PRINT: PRINT
END SUB 

Explanation: The second RANDOMIZE statement just continues the sequence where USING in the third restarts the sequence.

Random fireworks explosions:


RANDOMIZE TIMER
DEFINT A-Z

TYPE ftype
    vx AS SINGLE
    vy AS SINGLE
END TYPE
DIM frag(500) AS ftype 'fragments

DIM pi AS SINGLE
pi = 3.141593

DIM x AS SINGLE, y AS SINGLE
DIM t AS SINGLE, g AS SINGLE, p AS SINGLE
t = 0
g = 0.4 'gravity
p = 15 'explosion power

sw = 800
sh = 600

SCREEN _NEWIMAGE(sw, sh, 32)

DO
    FOR i = 0 TO UBOUND(frag)
        frag(i).vx = RND * COS(2 * pi * RND)
        frag(i).vy = RND * SIN(2 * pi * RND)
    NEXT

    x = sw * RND
    y = sh * RND

    FOR t = 0 TO 25 STEP 0.1
        LINE (0, 0)-(sw, sh), _RGB(0, 0, 0), BF
        FOR i = 0 TO UBOUND(frag)
            PSET (x + t * p * frag(i).vx, y + t * p * frag(i).vy + g * t * t), _RGB(255, 255, 0)
        NEXT
        _DISPLAY
        _LIMIT 150

        IF _KEYHIT = -27 THEN EXIT DO
    NEXT
LOOP
SYSTEM

See Also