konglify
konglify
  • Threads: 28
  • Posts: 160
Joined: Aug 28, 2014
March 4th, 2017 at 6:05:00 AM permalink
Hi there,
I am practicing a math calculation on free game. When 5 scatters occur in base game, award 30 free games; when 4 scatters occur, award 20 free games; when 3 scatters occur, award 10 free games. And it is given that the probability of getting 5 scatters is P5, the probability of getting 4 scatters is P4 and the probability of getting 3 scatters is P3. The base game and free game uses the same reel strips. Free game could be triggered again with same rules. I compute the average pay for free game to be PF so the contribution of free game to overall payback is (P5+P4+P3)*PF. I verify this with simulation and they match up pretty good.

In my simulation, I simulate the free game part as

we assume the conditional probability to get 30, 20 and 10 free games is: PC5 = P5/(P5+P4+P3), PC4 = P4/(P5+P4+P3), PC3 = P3/(P5+P4+P3)


for (spin=0; spin<10000000; spin++)
{
num_of_free_game = randomly pick 30/20/10 at PC5, PC4 and PC3

total_bet++; // each bet of base game spin is 1 credit
while (num_of_free_game; count>0)
{
pay += check winning pay;
num_of_free_game += additional free game if any
num_of_free_game--;
}
}
free_pay = pay/total_bet;


This works well and I get very accurate pays comparing to the exact calculation. I am thinking if I could estimate the pay when the initial number free game is given and calculate the contribution later like:


for (spin=0; spin<10000000; spin++)
{
num_of_free_game = 30

total_bet++; // each bet of base game spin is 1 credit
while (num_of_free_game; count>0)
{
pay += check winning pay;
num_of_free_game += additional free game if any
num_of_free_game--;
}
}
free_pay_30 = pay/total_bet;

for (spin=0; spin<10000000; spin++)
{
num_of_free_game = 20

total_bet++; // each bet of base game spin is 1 credit
while (num_of_free_game; count>0)
{
pay += check winning pay;
num_of_free_game += additional free game if any
num_of_free_game--;
}
}
free_pay_20 = pay/total_bet;

for (spin=0; spin<10000000; spin++)
{
num_of_free_game = 10

total_bet++; // each bet of base game spin is 1 credit
while (num_of_free_game; count>0)
{
pay += check winning pay;
num_of_free_game += additional free game if any
num_of_free_game--;
}
}
free_pay_10 = pay/total_bet;



And calculate the overall pay as PC5*free_pay_30 + PC4*free_pay_20 + PC3*free_pay_10, but this number is very much different from what's given in free_pay. So are those two method should give the same result?
CrystalMath
CrystalMath
  • Threads: 8
  • Posts: 1911
Joined: May 10, 2011
March 4th, 2017 at 6:16:45 AM permalink
In the second one, make sure you set total_bet=0 and pay=0 between the for(spin=0... loops.
I heart Crystal Math.
konglify
konglify
  • Threads: 28
  • Posts: 160
Joined: Aug 28, 2014
March 4th, 2017 at 8:17:29 AM permalink
Quote: CrystalMath

In the second one, make sure you set total_bet=0 and pay=0 between the for(spin=0... loops.



Thanks. My bad. Actually, the original does reset those two variable to zero in the code I run. I just forget to do that in my copy and paste code.
konglify
konglify
  • Threads: 28
  • Posts: 160
Joined: Aug 28, 2014
March 5th, 2017 at 4:47:28 AM permalink
Sorry to bother again. What I mean is I got those two variables reset to zero in each code section. But it doesn't fix the problem, I still get a very different numbers given by two methods.
rsactuary
rsactuary
  • Threads: 29
  • Posts: 2315
Joined: Sep 6, 2014
March 5th, 2017 at 5:22:46 AM permalink
So this post is from someone who has done absolutely 0 slot math.. so I may be way off base here, but is the problem with your assumption that PF = P3 + P4 + P5?

Seems these probabilities are not independent and therefore this is incorrect. Again, I could be way off base here.
CrystalMath
CrystalMath
  • Threads: 8
  • Posts: 1911
Joined: May 10, 2011
March 5th, 2017 at 8:00:28 AM permalink
It seems like these should give the same results.
I heart Crystal Math.
ThatDonGuy
ThatDonGuy
  • Threads: 122
  • Posts: 6636
Joined: Jun 22, 2011
March 5th, 2017 at 8:08:57 AM permalink
Quote: konglify

Sorry to bother again. What I mean is I got those two variables reset to zero in each code section. But it doesn't fix the problem, I still get a very different numbers given by two methods.


Are you sure the "randomly pick 30/20/10 at PC5, PC4 and PC3" is working the way you expect it to work?

Also, what numbers are you getting in both cases - and in the second case, what do you get for free_pay_30, free_pay_20, and free_pay_10?

For that matter, what are your P3, P4, and P5 values?
  • Jump to: