RNG Test Report – SG Gaming
This report summarises the assessment of Scientific Games Interactive’s Random Number Generator (RNG).
SGI provided source code and a test harness for empirical testing. The assessment methods included empirical testing of the RNG outputs and review of the supplied source code. Testing was performed on the following baseline:
Platform Supplier: WMS Industries Inc.
Platform Version: Ocelot
CasinArena System: v1.41.9
MGA v3.22.0.201
GLS v7.8.5.0
The RNG has been assessed for compliance with the relevant sections of the United Kingdom Gambling Commission (UKGC) Remote gambling and software technical standards (July 2015)
The RNG outputs were determined to be acceptably random for the ranges assessed and also from a bitwise perspective. The source code for the RNG has been reviewed and no potential issues have been noted. Based on the selection of tests executed it is the teams assessment that the RNG is suitable for production of random numbers for gaming applications. No issues are raised.
RNG Code Analysis
The submission consisted of C++ source files, implementing the RNG algorithm and supporting functions. The RNG uses an implementation of the r250 shift-register algorithm; 7 instances are used in combination.
RNG Predictability
The implementation of the RNG ensures that, even with knowledge of the algorithm, implementation and seed it would be computationally infeasible to predict the next number.
Seeding
Each of the RNG instances are seeded individually from an implementation of Park and Miller’s linear congruential generator (LCG) RNG. The entropy source is the number of seconds elapsed since the Epoch (January 1, 1970). The RNG instances are only re-seeded on restart.
Background Cycling
The instances cycle randomly, at an acceptable rate to prevent prediction.
Outputs
The RNG produces integer numbers in the interval [0, 2^32].
Period
The period of the RNG is sufficiently large to ensure that all game outcome combinations are possible for the declared applications.
Mapping and Scaling
The scaling algorithm used to reduce the range of the RNG maintains a uniform probability for the reduced range; therefore, the numbers within the lower range are equally probable.
RNG Failure
The RNG is required for system operation, so any failure to instantiate the RNG will cause a corresponding failure of the system itself to operate. In the event of failure, an alert in the Self-Monitoring program occurs.
Analysis of 20 million scaled integers between 0 and 99,999 (inclusive)
The frequency of occurrences of the possible outcomes was as expected for a random distribution. The outcomes covered the full range of possibilities. No pairwise correlations were observed outside of the expectations for a random sample. No regular patterns or groupings were observed. The gaps between repetitions of outcomes were observed to be random.
Random Number Generator Requirements
Requirement:
To ensure that games and other virtual events operate fairly.
Random number generation and game results must be ‘acceptably random’. Acceptably random here means that it is possible to demonstrate to a high degree of confidence that the output of the RNG, game, lottery and virtual event outcomes are random, through, for example, statistical analysis using generally accepted tests and methods of analysis. Adaptive behaviour (i.e. a compensated game) is not permitted.
Assessment:
The RNG was determined to be acceptably random, unpredictable, and not reproducible for all of the ranges assessed. No evidence of compensatory or adaptive behaviour was observed in the RNG source code supplied.
Requirement:
a. RNG’s should be capable of demonstrating the following qualities:
i. the output from the RNG is uniformly distributed over the entire output range and game, lottery, or virtual event outcomes are distributed in accordance with the expected/theoretical probabilities
Assessment:
The output from the RNG passed applicable empirical tests for randomness.
Requirement:
a. RNG’s should be capable of demonstrating the following qualities:
ii. the output of the RNG, game, lottery, and virtual event outcomes should be unpredictable, for example, for a software RNG it should be computationally infeasible to predict what the next number will be without complete knowledge of the algorithm and
seed value
Assessment:
It would be computationally infeasible to predict what the next number will be without complete knowledge of the algorithm and seed value.
Requirement:
a. RNG’s should be capable of demonstrating the following qualities:
iii. random number generation does not reproduce the same output stream (cycle), and that two instances of a RNG do not produce the same stream as each other (synchronise)
Assessment:
Statistical analysis of the numbers drawn has demonstrated that the numbers are statistically independent.
Requirement:
a. RNG’s should be capable of demonstrating the following qualities:
iv. any forms of seeding and re-seeding used do not introduce predictability
Assessment:
The RNG threads are seeded individually by an implementation of the Park and Miller LCG RNG. The RNG instances are only re-seeded if the IGS is restarted. These methods do not introduce predictability.