Description: Random generator - Lottery

Posted on 13.12.2016 | Last modified on 21.12.2016

Short description

This random generator creates lottery numbers randomly.

What is randomness?

Randomness is an event for which there is no causal explanation. This means that the result of a random generator may not be predictable or computable. This, however, contradicts the laws of each computer. In other words, a computer can not produce absolutely random numbers without additional peripherals. In this case we call it pseudo-random numbers. In general, you can philosophize about at which point you can actually speak about randomness.

How are the lottery numbers generated?

In principle, two different mechanisms are used to generate pseudo-random numbers in this generator.

Random generator 1 for binary string

The first mechanism is used to generate the binary string in the background. On the one hand, this is for better optics and on the other hand it can be ensured by the user, that a new random value has actually been generated. For creating the binary string, the PHP functions mt_rand() and decbin() are used. The first function generates the actual random number and the second is used to convert the decimal number into a binary number. In principle the following algorithm is used:

1
2
$random_string = "";
while(strlen($random_string) < PREFERRED_LENGTH) $random_string .= decbin(mt_rand(NUMBER1, NUMBER2));

Random generator 2 for lottery numbers

The previous random number generator produces relatively good random numbers, which, however, can further be improved. For generating the lottery numbers, the function random_int() is used, which generates cryptographically secure pseudo-random numbers:

1
2
3
4
5
6
7
8
9
10
11
12
// Intitialization
for($i = 1; $i <= $lotto2; $i++) $numbers[] = $i;

// Select all lottery numbers
for($i = 1; $i <= $lotto1; $i++) {
	
	$index 			= random_int(0, count($numbers)-1);
	$lottery_numbers[] 	= $numbers[$index];
	unset($numbers[$index]);				// Delete entry
	$numbers 		= array_values($numbers);	// Reset indexes
	
}
Share this post