Setup¶

In [1]:
import numpy as np

Constants & Functions¶

In [2]:
m3 = np.array([[1, 0, 0],
               [1/2, 0, 1/2],
               [0, 0, 1]])

Fiddler¶

In [3]:
def lilyPad(n) :
    '''Given a maximum number of lily pads n,
    returns a list of (n-2) ordered triples
    (k, p1, pk), where :
    *k is from 3 to n lily pads.
    *p1 is the probability of eventually landing on lily pad 1.
    *pk = 1-p1'''  
    
    temp = m3

    
    final = [[1/2, 0, 1/2]]
    
    for k in range(4, n+1) :
        initial = np.array([[0,1]+[0]*(k-2)])
        
        #Grow k x k from k-1 x k-1.
        matrix_array = []
        for i in range(k-2) :
            matrix_array.append(temp[i].tolist() + [0])
        
        #k-1.
        matrix_array.append([0]*(k-3) + [1/(k-1), 0, (k-2)/(k-1)])
        #k.
        matrix_array.append([0]*(k-1) + [1])
        
        #kxk matrix.
        temp = np.array(matrix_array)
        
        #Evaluate end game.
        eg = initial @ np.linalg.matrix_power(temp, 100)
        final.append(eg.tolist()[0])
    
    return(final)


probs = lilyPad(100)
for p in probs:
    print(p[0])
    
0.5
0.6
0.625
0.6307692307692307
0.6319018404907976
0.6320899335717934
0.6321167883211679
0.6321201448891888
0.6321205178374103
0.6321205551321909
0.632120558522625
0.6321205588051614
0.6321205588268948
0.6321205588284472
0.6321205588285507
0.6321205588285571
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
0.6321205588285576
Rohan Lewis¶

2025.01.17¶