0
votes

Comment faire un nombre aléatoire partagé entre les instances?

import random

class Unique_Key(object):
def __init__(self):
    self.uni_k =random.randint(1, 1000000)
    


unique_key_obj1=Unique_Key()
print(f"First Record {unique_key_obj1.uni_k}")


unique_key_obj=Unique_Key()
print(f"Second Record {unique_key_obj.uni_k}")
Can someone please help me  with how to make the value of the unique_key_obj1 object to be the same as that of the unique_key_obj object? Thanks!

0 commentaires

3 Réponses :


0
votes

Utilisez ensemencer le générateur aléatoire.

import random

class Unique_Key(object):
def __init__(self):
    self.uni_k =random.randint(1, 1000000)
    
mySeed = random.randint(1, 1000000)
random.seed(mySeed)
unique_key_obj1=Unique_Key()
print(f"First Record {unique_key_obj1.uni_k}")


random.seed(mySeed)
unique_key_obj=Unique_Key()
print(f"Second Record {unique_key_obj.uni_k}")


2 commentaires

Merci beaucoup, Remplé. Cela a fonctionné mais je ne veux pas que les deux valeurs restent constantes, je veux toujours qu'ils ont des fonctionnalités aléatoires mais la même valeur.


J'ai édité ma réponse en conséquence. Vous pouvez simplement faire des semences un nouveau nombre aléatoire @ agbési-innocent



6
votes

Vous devez définir cette variable sous forme de variable de classe plutôt que la variable d'instance . Comme: xxx xxx

Lorsque vous définissez self.some_variable à une valeur aléatoire, il créera une variable spécifique à cette instance uniquement et non partagée entre toutes les instances d'un objet.

Les variables de classe sont généralement définies en dehors de toutes les méthodes, placées juste en dessous de l'en-tête de la classe et avant la méthode du constructeur et d'autres méthodes.


1 commentaires

Merci beaucoup, Nicolas Gervais. Cela a fonctionné comme je le veux et merci pour les frais de scolarité supplémentaires!



0
votes

Vous pouvez faire passer sans régler la graine code> code>. Nous pouvons faire le point en enregistrant l'état aléatoire précédent et en enregistrant l'appel à l'appel aléatoire suivant. Cela garantira que générer les mêmes numéros.

Cela a été pris de Documents Python. P>

aléatoire.getstate () code> p> p>

Renvoie un objet capturant l'état interne actuel de la Générateur. Cet objet peut être transmis à Statetate () pour restaurer le état. p> blockQuote>

En savoir plus sur le module aléatoire dans Python Docs aléatoire P>

print x.uni_k == y.uni_k
True


0 commentaires