RANDOMIZE - mkilgore/QB64pe GitHub Wiki
RANDOMIZE is used with a seed value to generate different random number sequences using the RND function.
- RANDOMIZE [USING] {seednumber|TIMER}
- The seed number can be ANY positive or negative numerical type value. The TIMER value is often used to change RND output each run.
- If the seed number is omitted, the program will display: Random-number seed (-32768 to 32767)? request on screen.
- USING resets a seed number sequence to the start of the sequence as if the program just started using that seed in QB64 only.
- Note: The RANDOMIZE USING seed number MUST be designated or a Name already in use status error will occur!
- If the same initial seed number is used, the sequence of random numbers returned will be identical every program run.
- The fact that random numbers would always be the same has been used for simple data encryption and decryption.
- Using a TIMER starting value ensures that the initial return sequence values are different almost every time the program is run!
- RUN should reset the RANDOMIZE sequence to the starting RND function value.(Not yet in QB64)
RANDOMIZE TIMER DO...LOOP 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.
SUB Print7 FOR...NEXT 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.
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...NEXT 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...NEXT t = 0 TO 25 STEP 0.1 LINE (0, 0)-(sw, sh), _RGB(0, 0, 0), BF FOR...NEXT 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...THEN _KEYHIT = -27 THEN EXIT DO NEXT LOOP SYSTEM |
See also:
Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page