2009-11-26 5 views
1

J'ai un problème qui est, dans mon code, n'importe qui peut aider sera génial. c'est l'exemple de code.Comment réparer la valeur produite par Random?

from random import *  
from numpy import * 
r=array([uniform(-R,R),uniform(-R,R),uniform(-R,R)]) 

def Ft(r): 
    for i in range(3): 
     do something here, call r 
    return something 

mais je trouve que dans la coquille de python, chaque fois que je lance la fonction Ft, il me donne un résultat différent ..... semble être dans la fonction, dans chaque itérer de la boucle, appelez r fois , il donne des nombres aléatoires une fois ... mais ne fixe pas le nombre aléatoire initial quand j'appelle la fonction .... comment est-ce que je peux le réparer? qu'en est-il de l'utilisation b = copier (r) puis appeler b dans la fonction Ft? Merci

Répondre

6

Voulez-vous dire que vous voulez que les appels à randon.uniform() pour retourner la même séquence de valeurs chaque fois que vous exécutez la fonction?
Si c'est le cas, vous devez appeler random.seed() pour définir le début de la séquence sur une valeur fixe. Si ce n'est pas le cas, l'heure système actuelle est utilisée pour initialiser le générateur de nombres aléatoires, ce qui a pour but de générer une séquence différente à chaque fois.

Quelque chose comme cela devrait fonctionner

random.seed(42) # Set the random number generator to a fixed sequence. 
r = array([uniform(-R,R), uniform(-R,R), uniform(-R,R)]) 
+0

merci pour répondre, une grande aide! Mais je ne comprends pas tout à fait ce qui est que 100 signifie? – user211037

+2

Curieusement, le «100» est juste un nombre aléatoire. Pour s'assurer que les fonctions 'random' renvoient la même séquence, vous devez transmettre la même valeur à' seed() 'à chaque fois, mais la valeur elle-même n'est pas pertinente. 100 vient juste d'être le premier qui me vient à l'esprit. Si j'avais pensé plus, je serais probablement allé pour 42. –

1

Je pense que vous voulez dire 'liste' au lieu de 'tableau', vous essayez d'utiliser des fonctions quand vous n'en avez pas vraiment besoin. Si je vous comprends bien, vous voulez modifier une liste de flotteurs au hasard:

import random 
    r=[random.uniform(-R,R) for x in range(3)] 
    def ft(r): 
     for i in range(len(r)): 
      r[i]=???