## d20 fixed Board Dice Game

import random

## define variables

outcomes = 20
roll = 0

twoFortyWin = 0  ## Variables for counting game wins
threeThirtynineWin = 0
fourThirtyeightWin = 0
fiveThirtysevenWin = 0
sixThirtysixWin = 0
sevenThirtyfiveWin = 0
eightThirtyfourWin = 0
nineThirtythreeWin = 0
tenThirtytwoWin = 0
elevenThirtyoneWin = 0
twelveThirtyWin = 0
thirteenTwentynineWin = 0
fourteenTwentyeightWin = 0
fifteenTwentysevenWin = 0
sixteenTwentysixWin = 0
seventeenTwentyfiveWin = 0
eighteenTwentyfourWin = 0
nineteenTwentythreeWin = 0
twentyTwentytwoWin = 0
twentyoneWin = 0

trials = int(input("Number of Trials: "))         ## Number of Trials

scale = int(input("Proportionality scale: "))     ## Scale of the board proportionality

k = 0

for k in range(0, trials):

    twoForty = 0  ## Variables for counting game wins
    threeThirtynine = 0
    fourThirtyeight = 0
    fiveThirtyseven = 0
    sixThirtysix = 0
    sevenThirtyfive = 0
    eightThirtyfour = 0
    nineThirtythree = 0
    tenThirtytwo = 0
    elevenThirtyone = 0
    twelveThirty = 0
    thirteenTwentynine = 0
    fourteenTwentyeight = 0
    fifteenTwentyseven = 0
    sixteenTwentysix = 0
    seventeenTwentyfive = 0
    eighteenTwentyfour = 0
    nineteenTwentythree = 0
    twentyTwentytwo = 0
    twentyone = 0

    end = 0

    while (end == 0):  ##  Optional output commands are marked as comment lines

        roll = (random.randint(1, 20) + random.randint(1, 20))
        ## print('Roll ', k, ' = ', roll)
        if (roll == 2) or (roll == 40):
            twoForty = twoForty + 1
        elif (roll == 3) or (roll == 39):
            threeThirtynine = threeThirtynine + 1
        elif (roll == 4) or (roll == 38):
            fourThirtyeight = fourThirtyeight + 1
        elif (roll == 5) or (roll == 37):
            fiveThirtyseven = fiveThirtyseven + 1
        elif (roll == 6) or (roll == 36):
            sixThirtysix = sixThirtysix + 1
        elif (roll == 7) or (roll == 35):
            sevenThirtyfive = sevenThirtyfive + 1
        elif (roll == 8) or (roll == 34):
            eightThirtyfour = eightThirtyfour + 1
        elif (roll == 9) or (roll == 33):
            nineThirtythree = nineThirtythree + 1
        elif (roll == 10) or (roll == 32):
            tenThirtytwo = tenThirtytwo + 1
        elif (roll == 11) or (roll == 31):
            elevenThirtyone = elevenThirtyone + 1
        elif (roll == 12) or (roll == 30):
            twelveThirty = twelveThirty + 1
        elif (roll == 13) or (roll == 29):
            thirteenTwentynine = thirteenTwentynine + 1
        elif (roll == 14) or (roll == 28):
            fourteenTwentyeight = fourteenTwentyeight + 1
        elif (roll == 15) or (roll == 27):
            fifteenTwentyseven = fifteenTwentyseven + 1
        elif (roll == 16) or (roll == 26):
            sixteenTwentysix = sixteenTwentysix + 1
        elif (roll == 17) or (roll == 25):
            seventeenTwentyfive = seventeenTwentyfive + 1
        elif (roll == 18) or (roll == 24):
            eighteenTwentyfour = eighteenTwentyfour + 1
        elif (roll == 19) or (roll == 23):
            nineteenTwentythree = nineteenTwentythree + 1
        elif (roll == 20) or (roll == 22):
            twentyTwentytwo = twentyTwentytwo + 1
        else:
            twentyone = twentyone + 1

        if (twoForty == 7*scale):
            twoFortyWin = twoFortyWin + 1
            ## print('Trial #', k, ', Two/Sxiteen wins.')
            end = 1
        elif (threeThirtynine == 7*scale):
            threeThirtynineWin = threeThirtynineWin + 1
            ## print('Trial #', k, ', Three/Fifteen wins.')
            end = 1
        elif (fourThirtyeight == 7*scale):
            fourThirtyeightWin = fourThirtyeightWin + 1
            ## print('Trial #', k, ', Four/Fourteen wins.')
            end = 1
        elif (fiveThirtyseven == 7*scale):
            fiveThirtysevenWin = fiveThirtysevenWin + 1
            ## print('Trial #', k, ', Five/Nine wins.')
            end = 1
        elif (sixThirtysix == 7*scale):
            sixThirtysixWin = sixThirtysixWin + 1
            ## print('Trial #', k, ', Six/Eight wins.')
            end = 1
        elif (sevenThirtyfive == 7*scale):
            sevenThirtyfiveWin = sevenThirtyfiveWin + 1
            ## print('Trial #', k, ', Seven/Eleven wins.')
            end = 1
        elif (eightThirtyfour == 7*scale):
            eightThirtyfourWin = eightThirtyfourWin + 1
            ## print('Trial #', k, ', Eight/Ten wins.')
            end = 1
        elif (nineThirtythree == 7*scale):
            nineThirtythreeWin = nineThirtythreeWin + 1
            ## print('Trial #', k, ', Three/Fifteen wins.')
            end = 1
        elif (tenThirtytwo == 7*scale):
            tenThirtytwoWin = tenThirtytwoWin + 1
            ## print('Trial #', k, ', Four/Fourteen wins.')
            end = 1
        elif (elevenThirtyone == 7*scale):
            elevenThirtyoneWin = elevenThirtyoneWin + 1
            ## print('Trial #', k, ', Five/Nine wins.')
            end = 1
        elif (twelveThirty == 7*scale):
            twelveThirtyWin = twelveThirtyWin + 1
            ## print('Trial #', k, ', Six/Eight wins.')
            end = 1
        elif (thirteenTwentynine == 7*scale):
            thirteenTwentynineWin = thirteenTwentynineWin + 1
            ## print('Trial #', k, ', Seven/Eleven wins.')
            end = 1
        elif (fourteenTwentyeight == 7*scale):
            fourteenTwentyeightWin = fourteenTwentyeightWin + 1
            ## print('Trial #', k, ', Eight/Ten wins.')
            end = 1
        elif (fifteenTwentyseven == 7*scale):
            fifteenTwentysevenWin = fifteenTwentysevenWin + 1
            ## print('Trial #', k, ', Nine wins.')
            end = 1
        elif (sixteenTwentysix == 7*scale):
            sixteenTwentysixWin = sixteenTwentysixWin + 1
            ## print('Trial #', k, ', Three/Fifteen wins.')
            end = 1
        elif (seventeenTwentyfive == 7*scale):
            seventeenTwentyfiveWin = seventeenTwentyfiveWin + 1
            ## print('Trial #', k, ', Four/Fourteen wins.')
            end = 1
        elif (eighteenTwentyfour == 7*scale):
            eighteenTwentyfourWin = eighteenTwentyfourWin + 1
            ## print('Trial #', k, ', Five/Nine wins.')
            end = 1
        elif (nineteenTwentythree == 7*scale):
            nineteenTwentythreeWin = nineteenTwentythreeWin + 1
            ## print('Trial #', k, ', Six/Eight wins.')
            end = 1
        elif (twentyTwentytwo == 7*scale):
            twentyTwentytwoWin = twentyTwentytwoWin + 1
            ## print('Trial #', k, ', Seven/Eleven wins.')
            end = 1
        elif (twentyone == 7*scale):
            twentyoneWin = twentyoneWin + 1
            ## print('Trial #', k, ', Nine wins.')
            end = 1


print('Proportional Board, d20, scale of ',scale,' and ',trials,' trials:')
print(' # # # # # # # ')
print('Two/Forty won ', twoFortyWin, 'times for ', (100 * twoFortyWin) / trials, '%.')
print('Three/Thirty-Nine won ', threeThirtynineWin, 'times for ', (100 * threeThirtynineWin) / trials, '%.')
print('Four/Thirty-eight won ', fourThirtyeightWin, 'times for ', (100 * fourThirtyeightWin) / trials, '%.')
print('Five/Thirty-seven won ', fiveThirtysevenWin, 'times for ', (100 * fiveThirtysevenWin) / trials, '%.')
print('Six/Thirty-six won ', sixThirtysixWin, 'times for ', (100 * sixThirtysixWin) / trials, '%.')
print('Seven/Thirty-five won ', sevenThirtyfiveWin, 'times for ', (100 * sevenThirtyfiveWin) / trials, '%.')
print('Eight/Thirty-four won ', eightThirtyfourWin, 'times for ', (100 * eightThirtyfourWin) / trials, '%.')
print('Nine/Thirty-three won ', nineThirtythreeWin, 'times for ', (100 * nineThirtythreeWin) / trials, '%.')
print('Ten/Thirty-two won ', tenThirtytwoWin, 'times for ', (100 * tenThirtytwoWin) / trials, '%.')
print('Eleven/Thirty-one won ', elevenThirtyoneWin, 'times for ', (100 * elevenThirtyoneWin) / trials, '%.')
print('Twelve/Thirty won ', twelveThirtyWin, 'times for ', (100 * twelveThirtyWin) / trials, '%.')
print('Thirteen/Twenty-nine won ', thirteenTwentynineWin, 'times for ', (100 * thirteenTwentynineWin) / trials, '%.')
print('Fourteen/Twenty-eight won ', fourteenTwentyeightWin, 'times for ', (100 * fourteenTwentyeightWin) / trials, '%.')
print('Fifteen/Twenty-seven won ', fifteenTwentysevenWin, 'times for ', (100 * fifteenTwentysevenWin) / trials, '%.')
print('Sixteen/Twenty-six won ', sixteenTwentysixWin, 'times for ', (100 * sixteenTwentysixWin) / trials, '%.')
print('Seventeen/Twenty-five won ', seventeenTwentyfiveWin, 'times for ', (100 * seventeenTwentyfiveWin) / trials, '%.')
print('Eighteen/Twenty-four won ', eighteenTwentyfourWin, 'times for ', (100 * eighteenTwentyfourWin) / trials, '%.')
print('Nineteen/Twenty-three won ', nineteenTwentythreeWin, 'times for ', (100 * nineteenTwentythreeWin) / trials, '%.')
print('Twenty/Twenty-two won ', twentyTwentytwoWin, 'times for ', (100 * twentyTwentytwoWin) / trials, '%.')
print('Twenty-One won ', twentyoneWin, 'times for ', (100 * twentyoneWin) / trials, '%.')


fairSharePercent = 1/outcomes
print('Equal percent is', fairSharePercent,'%')
variance = (((((twoFortyWin) / trials)-fairSharePercent)**2)+((((threeThirtynineWin) / trials)-fairSharePercent)**2)
            +((((fourThirtyeightWin) / trials)-fairSharePercent)**2)+((((fiveThirtysevenWin) / trials)-fairSharePercent)**2)
            +((((sixThirtysixWin) / trials)-fairSharePercent)**2)+((((sevenThirtyfiveWin) / trials)-fairSharePercent)**2)
            +((((eightThirtyfourWin) / trials)-fairSharePercent)**2)+((((nineThirtythreeWin) / trials)-fairSharePercent)**2)
            +((((tenThirtytwoWin) / trials)-fairSharePercent)**2)+((((elevenThirtyoneWin) / trials)-fairSharePercent)**2)
            +((((twelveThirtyWin) / trials)-fairSharePercent)**2)+((((thirteenTwentynineWin) / trials)-fairSharePercent)**2)
            +((((fourteenTwentyeightWin) / trials)-fairSharePercent)**2)+((((fifteenTwentysevenWin) / trials)-fairSharePercent)**2)
            +((((sixteenTwentysixWin) / trials)-fairSharePercent)**2)+((((seventeenTwentyfiveWin) / trials)-fairSharePercent)**2)
            +((((eighteenTwentyfourWin) / trials)-fairSharePercent)**2)+((((nineteenTwentythreeWin) / trials)-fairSharePercent)**2)
            +((((twentyTwentytwoWin) / trials)-fairSharePercent)**2)+((((twentyoneWin) / trials)-fairSharePercent)**2) ) / (outcomes - 1)
print('Game variance is ', variance)