Hice una breve secuencia de comandos de python para ejecutar una simulación de monte carlo en esta. En esto, supuse que si había un anillo (de modo que todo el mundo tiene las manos), entonces esto podría no ser una cadena. Uno podría hacerlo de la otra manera, pero de esta manera significa que el número de cadenas que se pueden contar por contar el número de subcadenas en el anillo que son iguales a T,FT,F.
![enter image description here]()
En estas condiciones se ve como el pico es bastante mucho en p=0.5p=0.5 para todos los nn. De hecho, el gráfico se ve casi exactamente igual a np(p−1)np(p−1), como uno de los comentaristas de adivinar.
El código, en caso de que usted está interesado, está aquí:
#http://math.stackexchange.com/questions/1359692/uniform-continuous-distribution-for-cycles
import pylab as py
import numpy as np
def noChains(hands):
hands2 = np.zeros(hands.shape,dtype=bool)
hands2[:,:-1] = hands[:,:-1] & np.logical_not(hands[:,1:])
hands2[:,-1] = hands[:,-1] & np.logical_not(hands[:,0])
return np.sum(hands2,axis=1)
fig = py.figure()
ax1 = fig.add_subplot(111)
noPs = 50
ps = np.linspace(0,1,noPs).reshape((noPs,1))
reps = 10000
for n in [1,2,5,10,20,30,40,50,60,70,80,90,100]:
E = np.zeros(noPs)
for i in range(reps):
E += noChains(np.repeat(np.random.random(n).reshape((1,n)),noPs,axis=0)<=ps)
E = E/reps
ax1.plot(ps,E,"-")
ax1.text(ps[25],E[25],"$n=%d$"%n)
print(n,np.argmax(E),ps[np.argmax(E)],np.max(E))
ax1.set_title("$E(X)$ vs $p$ for various $n$")
ax1.set_xlabel("$p$")
ax1.set_ylabel("$E(X)$")
ax1.set_xlim(0.000000,1.000000)
ax1.set_ylim(0.000000,26.000000)
py.savefig("E vs p for n3.png")