According to some simulations I've run, the house edge for this game is around 4%:
average return over 20000 games is 0.965675
average return over 20000 games is 0.951625
average return over 20000 games is 0.961850
average return over 100000 games is 0.960370
#!/usr/bin/env python
import MersenneTwister19937
import random, string
class KingCoin:
def __init__(self):
seed = random.randint(0, 2**60)
self.mt = MersenneTwister19937.MersenneTwister19937(seed)
self.FOUR_DIFFERENT = 3 # 4 different colors in 4 spins
self.SIX_SPINS = 2.5 # 6 spins, any color
self.THREE_IN_ROW = 2 # 3 in a row
self.THREE_OF_FIVE = 1.5 # 3 out of 5 (needs 5 non-black spins to pay)
self.LOSE = 0 # spinning black = lose
def play_once(self):
wheel = '1'*3 + '0'*450
wheel = [150] + map(lambda x: len(x)+100, string.split(self.mt.shuffle_string(wheel), '1'))
n = 0
spots = []
for c in wheel:
spots += c*[n]
if (n == 0):
n += 1
else:
n *= 2
self.spots = self.mt.shuffle(spots)[:6]
s0, s1, s2, s3, s4, s5 = self.spots
# 3 spins
if s0==0 or s1==0 or s2==0: return self.LOSE
if s0==s1 and s1==s2: return self.THREE_IN_ROW
# 4 spins
if s3==0: return self.LOSE
if s0+s1+s2+s3 == 15: return self.FOUR_DIFFERENT
if s1==s2 and s2==s3: return self.THREE_IN_ROW
# 5 spins
if s4==0: return self.LOSE
if s1+s2+s3+s4 == 15: return self.FOUR_DIFFERENT
if s2==s3 and s3==s4: return self.THREE_IN_ROW
c = {}
for i in self.spots[0:5]:
if c.has_key(i):
c[i] += 1
if c[i] == 3: return self.THREE_OF_FIVE
else:
c[i] = 1
# 6 spins
if s5==0: return self.LOSE
if s2+s3+s4+s5 == 15: return self.FOUR_DIFFERENT
else: return self.SIX_SPINS
k = KingCoin()
spins = 100000
sum = 0.0
for i in range(spins):
sum += k.play_once()
print "average return over %d spins is %f" % (spins, sum / spins)
Btw, dooglus, if you sign up for Kingcoin, let me know your receive address and I'll send you 1.0 BTC to play with to say thanks for this analysis!