Bonjour à tous,

je dois écrire un programme.

Un individu gravit un escalier. Il effectue des pas d’une ou deux marches selon le protocole suivant : à chaque fois, avant de faire un pas, il lance une pièce donnant pile avec la probabilité p ∈]0, 1[ ; il progresse ensuite d’une marche s’il obtient «pile» ou enjambe deux marches d’un coup s’il obtient «face».

Donc j'ai un problème. J'ai écrit le code suivant correspondant donc à ces trois questions ( a la fin).

J'ai le code d'erreur suivant :

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "C:\Users\\Downloads\WinPython-64bit-3.4.3.5\python-3.4.3.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile

execfile(filename, namespace)

File "C:\Users\Downloads\WinPython-64bit-3.4.3.5\python-3.4.3.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile

exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)

File "C:/Users/Desktop/", line 59, in <module>

hauteur=hauteur(n,p)

File "C:/Users//Desktop/", line 38, in hauteur

variable=pas(p)

File "C:/Users//Desktop/", line 28, in pas

if random.random()<p:

AttributeError: 'builtin_function_or_method' object has no attribute 'random'

>>>

voici le code que j 'ai tapé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
"""
Created on Sat Jan  2 14:35:51 2016
 
 
"""
 
# PARTIE 1
 
import random
 
import matplotlib.pyplot as plt
import statistics
from pylab import*
 
 
 
 
def pas(p):
 
    if random.random()<p:
        nbredemarches=1
    else:
        nbredemarches=2
    return nbredemarches
 
def hauteur(n,p):
    sommetotaldemarches=0
    variable=0
    for k in range (0,n,1):
        variable=pas(p)
        sommetotaldemarches=variable+ sommetotaldemarches
 
    return sommetotaldemarches
 
def nombre (n,p):
    nombredepaseffectue=0
    variable=0
    while variable<n:
        sommetotaldemarches=hauteur(n,p)
        variable=variable+sommetotaldemarches
        nombredepaseffectue=nombredepaseffectue+1
    return nombredepaseffectue
 
n=50
p=0,4
 
for k in range (0,2*n,1):
    plt.plot([k,k,k+1,k+1],[k,k+1,k+1,k+2],'k')
 
 
hauteur=hauteur(n,p)
plt.plot([hauteur,hauteur+1],[hauteur,hauteur],'r')
 
plt.show()
et voici les questions qui m'ont permis d'effectuer ce cheminement.


2.En déduire une fonction Python nommée pas qui prend en entrée le réel p ∈]0, 1[ et renvoie le nombre de marches gravies par l’individu lors d’un pas. 3. Ecrire une fonction Python nommée hauteur qui prend en entrée un entier n ∈ N ∗ et le réel p ∈]0, 1[, puis qui renvoie le nombre de marches gravies par l’individu à l’issue de n pas.

4. Ecrire une fonction Python nommée nombre qui prend en entrée un entier n ∈ N ∗ et le réel p ∈]0, 1[, puis qui renvoie le nombre de pas justes nécessaires pour atteindre ou dépasser la n-ième marche.

5. A la suite des fonctions précédentes, écrire des instructions Python – qui affectent à n la valeur 50 et à p la valeur 0.4, – puis qui tracent en noir un escalier à 2n marches et un point rouge

Merci pour votre aide.