Este es un problema de programación dinámica.
Para un rollo, la expectativa será de 3.5.
Para dos rollos, si la primera tirada obtiene 1 o 2 o 3, que va a rodar otra vez. En otras palabras, usted tiene 1/2 oportunidad de hacer el segundo rollo y obtener la expectativa de 3.5. Si 4 o 5 o 6, se detiene aquí, ya que es lo suficientemente bueno por encima de la expectativa (3.5). Para tal resultado como 4 o 5 o 6, el promedio es de 5 con otro 1/2 de probabilidad. Así que el total de la expectativa será 1/2*3.5 + 1/2*5 = 4.25.
Para los tres rollos, que se considere el caso de una manera diferente después de la primera rueda. Si puedo obtener 5 o 6, voy a parar aquí por un rollo ya que se obtienen por encima de mis expectativas. De lo contrario, voy a rodar dos veces y obtener la expectativa de dos rollos de 4.25. En total, la expectativa será 2/3*4.25 + 1/3*5.5 = 14/3 = 4.67.
Supongamos que tenemos k rollos y obtener la expectativa $E$ por encima de 5, tenemos que cambiar la estrategia de nuevo después de la primera tirada. Usted puede dejar de rodar si usted recibe 6, de lo contrario seguir para obtener $E$ valores. La expectativa va a ser así:
$$E_{nuevo} = 1/6*6 + 5/6*E_{edad} $$
Para n rollos, escribir un programa en Python como el siguiente:
def die_fair_value(rolls):
cnt=1
val=3.5
while cnt < rolls:
if val < 4: