Procedure History
The whole idea of rating lottery numbers came about around November 1995. I originally started collecting the drawn numbers, machines and set of balls facts, believing that each machine or set of balls may have favourite numbers.
From the tiedious task of browsing these stats manually, I wrote a computer program on my home Amstrad computer. This simply picked out and made a list of all the numbers that had been drawn with each machine and how often. Although this lead to some bland results it still produced three £10 wins within my first four plays!
With this in mind, I then set about modifying this program to output all the numbers that had appeared alongside each other number. This would help shorten the list of combinations chosen from the first program, down to just two or three good lines that I could play with.
Using the stats produced by this program, I developed an algorithm that would search all possible combinations, rating only those neccesary, which would output the top 20 combinations of various lengths.
From here my Amstrad computer, with its astounding 64K(!) and 3.7MHz, was going to be too slow and a transfer from BASIC to Ada was made from home to the university computers.
The rating procedure used at this point ( Nov 1996 ) was ad 'hoc, to say the least, and my winning streak was losing touch with what I had in mind.
So, on the 19th June 1997, the following mathematical formula was developed to rate lottery combinations.
Procedure Derivation
To simply the procedure at first, consider just a pair of balls :
aA aB aAB |
- number of draws where ball A has appeared
- number of draws where ball B has appeared - number of draws where ball A and ball B have appeared together |
Using these facts, we want to give this pair a rating, r = f( aA , aB , aAB )
Arbitrary derivation of f
Each draw in the UK National Lottery draws 6 balls from 49. So a particular ball will be drawn beside 5 others selected from 48 remaining balls. We expect that, eventually, each ball will be drawn alongside every other an equal number of times, more precisely - once in every 48/5 (9.6) draws.
We may therefore predict : aAB = ( aA / 9.6 ) - but equally : aAB = ( aB / 9.6 )
So define "expected matches" as the average of these two values.
The 'goodness' of a pairing will be determined by the deviance of aAB ( "actual matches" ) from this expected value.
So considering the simple equation:
Expected properties of 'f'
Two restraints on f must be satisfied:-
Clearly, the first property is satisfied by the symmetry of aA and aB in f.
The second condition will be satisfied by fixing an appropriate value of n.
The remaining two constants may be chosen arbitrarily to calibrate the function.
It seems suitable that f( 9.6 , 1 , 1 ) = 1
so that any pair that follow the norm precisely are given a rating value of 1.
I have also chosen f( 1 , 1 , 1 ) = 0 as this gives simple values for n and k.
By condition 2
n( (aA+aB)/19.2 ) - kaAB + c = n( (aA+9.6+aB+1)/19.2 ) - k(aAB+1) + c
n( (aA+aB)/19.2 ) - kaAB = n( (aA+aB+10.6)/19.2 ) - kaAB - k
naA + naB = naA + naB + 10.6n - 19.2k
n = 19.2k / 10.6
By the chosen, arbitrary points
( 10.6n/19.2 ) - k + c = 1
k - k + c = 1
c = 1
f( 1 , 1 , 1 ) = 0
( 2n/19.2 ) - k + c = 0
( 2k/10.6 ) - k = -1
-8.6k / 10.6 = -1
k = 10.6 / 8.6
n = 19.2 / 8.6
So
f( aA , aB , aAB ) = ( aA + aB -10.6aAB + 1 ) / 8.6
Extension to a full combination
We define the rating value of a lottery combination of more than two balls as the product of the pair rating values of all pairings within the combination.
e.g.
f( aA , aB , aAB ) x f( aA , aC , aAC ) x f( aB , aC , aBC )
Implementing the function
When rating a function, there will be a slight problem with the negative values that occur for good pairs.
Also, this rating function will mainly be used to calculate the best 20 combinations.
If f > 1 then in adding a number to an existing combination, the rating value will always increase. Thus if a pair has a rating that is not good enough to enter the current top 20 combinations then searching on from this pair will not produce any combination with a better rating value : i.e. the searching process can be pruned.
It would also be handy if the rating value increase exponentially as the ing gets worse. Numbers can be discarded more quickly this way and so searching shortened.
It is for these reasons stated that I have chosen
r = ( aA + aB -10.6aAB + 1 ) / 8.6 |
Clearly, since 1 and e are constants the two conditions from which the original rating function was derived from, still apply to this improved version.
Foot note for the excited
Just to set things straight, I think it is necessary to point out what this derivation proves (if anything).
To begin with, this function identifies balls that have appeared together quite often in the past and rates each combination accordingly. This can only give an idea of how good a combination is, it does not tell you these pairs will appear again -
it can not predict lottery results.
So what can we do with these ratings?
As it stands the data is useless unless you can decide what to do with it, and this all depends on your views of probability.
The first premise is that good combinations should be used as staked lines. However, this is based upon the notion that past lottery draws influence forthcoming ones.
Alternatively, one can decide that since good combinations have 'had their day' (for want of a better expression) we should avoid them like the plague and take our money on the lower rated combinations.
How you use the data churned out by this program is something that you, yourself, should decide upon. But one thing for certain is that we should not use either notion and the rating function to find 'good' lottery combinations. Instead we should use the function and past draw data to test each premise.
Until either premise is shown to be valid, we can not be entirely certain of how to use these results.
In the mean time, however, this is just as good as any other way of choosing your lottery balls.
If you are using N3.0 or higher, you can view this function in action and analyse the results calculated over all the past draws, by clicking here.
![]() |