In a thread in the strategies section entitled "Pick by Split" I posted a method that I use to pick numbers that is based on dividing the numbers into two group multiple times and then choosing the number of digits that would make up the winning combination from each side. Here is a screen shot of what the application looks like:
I mostly use this method for Keno and there are 184,756 combinations of 10 digits per drawing. It takes roughly 12 minutes of processing time per thousand records if I want to do historical analysis. The analysis takes place in the background so that screen drawing is not slowing things down.
Most of the other types of analysis that I do average 10-15 seconds per drawing. 12 minutes is a big problem when it comes to collecting historical data as it would take almost 36 hours to process a single drawing.
One work around that I have considered is is to re-write the code so that multiple instances of the application can churn through the data. I'd prefer to avoid that option as having 5 computers churning through the data with their processors maxed out for several days would send my electric bill through the roof. My hope is that there is a mathematical solution to my problem that I can employ to considerably reduce the amount of processing time it takes per thousand records.
The following graphic illustrates what I am trying to accomplish.
Basically as the number of digits are chosen from columns A and B on each level, the quantity of combinations of numbers that can fulfill the requirements specified on each level is reduced until only 1 combination is left. I have gotten it so that with a pick 10 out of 80 game the number of levels is about 28 and in a majority of the levels the pair with the highest odds is the correct choice.
Number 3 represents the logic that my program uses to calculate the number of possibilities for the next level.
In this example if I have to pick a total of 6 digits between 1 and 10 I could on the first level pick 3 each from columns A and B. However to maintain that pick in level 2 the options of picking all 6 from one side or the other have been removed as well as options for picking 5 from either side.
If I again decide to pick 3 from either side there are multiple combinations of 2 and 1 on each side that can fulfill the requirement dictated by my choice of 3 each in level 1.
To save processing time my program looks at the combinations based on the unique blocks within each segment and then uses the number count to calculate the actual quantity of playable numbers in play. This saves a huge amount of processing time, but the problem is in later levels the number of combinations can get as high as almost 30,000 with 40 digits on each side for a keno game. Processing those 30K is what is causing the bottleneck.
What I am wondering is whether or not there is a way to look at a level and quickly calculate the number of combinations that fulfill the requirements specified in the previous levels while also providing totals about the remaining numbers still in play and the eligible splits that represent them without having to manually churn through each combination of blocks.
Any help or pointing in the right direction would be greatly appreciated, thanks.