$Random

From m204wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Get next random number

Note: Many $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for the $Random function is the RandomNumberGenerator class.

This function returns either an unpredictable random number, or the next number in a series of random numbers.

Syntax

%result = $Random([minimum], [maximum], [%seed])

%result A numeric variable to receive an integer greater than or equal to minimum and less than or equal to maximum.
minimum The smallest value that will be returned; the minimum value of this argument is the same as its default: -1,000,000,000.
maximum The greatest value that will be returned; the maximum value of this argument is the same as its default: 1,000,000,000. This argument must be greater than the smallest value that will be returned.
%seed A %variable or IMAGE item that was set to a random number seed using $Random_Seed. This argument must be a string of length at least 144.

If this argument is omitted, the number returned is unpredictable; if it is present, the seed determines a specific series of random numbers, and each call to $Random returns the next number in that series.

If any argument is invalid, the request is cancelled.

Examples

  1. In the following example an unpredictable hand of 5 playing cards is "dealt".

    %I = 5 REPEAT WHILE %I GT 0 %N = $Random(1, 52) IF %CARD(%N) NE '' THEN PRINT %CARD(%N) %I = %I - 1 %CARD(%N) = '' END IF END REPEAT

  2. In the following example a hand of 5 playing cards is "dealt", and the "player" can either ask for the particular hand to play, or can just hit enter, and get an unpredictable hand.

    %HAND STRING LEN 144 REPEAT FOREVER %X = $READ('Pick a 4-digit hand number') IF %X EQ 0 THEN %X = $Random(1, 9999) END IF IF %X GT 0 AND %X LT 10000 THEN LOOP END END IF PRINT 'I said a 4 digit number!' END REPEAT PRINT 'You are playing hand number' AND %X %X = $Random_Seed(%HAND, %X) %I = 5 REPEAT WHILE %I GT 0 %N = $Random(1, 52, %HAND) IF %CARD(%N) NE '' THEN PRINT %CARD(%N) %I = %I - 1 %CARD(%N) = '' END IF END REPEAT

Products authorizing $Random