probleme random.random python
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:
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.