12. SOLUTIONS /2

12.1. Solution

#-*- coding: utf-8 -*-

n = input("donner le rang (doit être >1) : ")

while n <= 1:

    n = input("donner le rang (doit être >1) : ")


a = 2
b = 4

for k in range(2,n+1):

    if b % 3 == 0:

        c = 2 + b - a

    else:

        c = 3 + b + a

    a = b
    b = c

print "rang N = ",n," U(N) = ",c

12.2. Solution

#-*- coding: utf-8 -*-
import random


def generationApresRepetitions(N):

    nb1Consecutifs = 0

    while nb1Consecutifs != N:
        x = random.randrange(2)
        print x,
        if x == 1:
            nb1Consecutifs = nb1Consecutifs+1
        else:
            nb1Consecutifs = 0

    print
    return(random.randrange(2))


def main():

    K = input('Donner le nombre de répétitions : ')
    s = 0

    for i in range(1000):
         val = generationApresRepetitions(K)
         s = s + val

    print "nombre de 1 :",s
    # ce nombre est en moyenne de 500 quel que soit K


#####################################################
# LANCEMENT DU PROGRAMME PRINCIPAL
#####################################################

main()

12.3. Solution

#-*- coding: utf-8 -*-

import random


def genereListe():

    v = [0]*100

    for i in range(100):
        v[i] = random.randrange(100)

    return v


def combienNonPresents(v):

    nbNonVus = 0

    for i in range(100):
        # combien de fois i est présent dans v ?
        nbFois = 0
        for n in v:
            if n == i:
                nbFois = nbFois + 1

        if nbFois == 0: # si présent zéro fois
            nbNonVus = nbNonVus + 1

    return nbNonVus


# autre solution plus compacte
def combienNonPresentsVersion2(v):

    nbNonVus = 0

    for i in range(100):
        # i est-il présent dans v ?
        if not(i in v):
            nbNonVus = nbNonVus + 1

    return nbNonVus


def main():

    s = 0

    for i in range(30):
        liste = genereListe()
        s = s + combienNonPresents(liste)

    print "moyenne du nombre de non représentés =", s/30.0

#####################################################
# LANCEMENT DU PROGRAMME PRINCIPAL
#####################################################

main()