$Random

From m204wiki
Revision as of 22:17, 11 November 2014 by ELowell (talk | contribs)
Jump to navigation Jump to search

Get next random number

Note: Most Sirius $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.

$Random accepts three optional arguments and returns an integer number.

The first argument specifies the smallest value that will be returned; the minimum value of this argument is the same as its default: -1,000,000,000.

The second argument specifies 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.

The third argument is 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.

Syntax

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

%result contains a random number greater than or equal to minimum and less than or equal to maximum.

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