Tirage aléatoire d'un entier (python)

Bonjour,
si je résume, il y a deux possibilités de simuler le lancer d'un dé équilibré à 6 faces sur Python :
- soit avec randint(1,6)
- soit avec randrange(1,7)

Pour des élèves de seconde, je pense que c'est suffisant (et plus simple car cela fait penser à l'instruction de la TI) de passer par randint(1,6)... Qu'en pensez-vous ?

Réponses

  • Sachant que les deux sont parfaitement équivalents
    Aide de python a écrit:
    randint(a, b)

    Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
  • Je crois que c'est avant tout une question de goût. Quand on utilise souvent la fonction range() (très, très utile) et pas souvent randint(), randrange() permet de ne pas se casser la tête à se demander si les bornes sont incluses ou non : même sémantique que range().
  • Bonjour,

    randint(1,6) me paraît mieux pour des secondes, pas la peine de les embêter avec les intervalles semi-ouverts à droite.

    Cordialement,

    Rescassol
  • On peut aussi utiliser
    choice([1,2,3,4,5,6]),
    
    qui a l'avantage de pouvoir s'utiliser avec n'importe quelle liste (et même n'importe quel objet itérable) et permet par conséquent de changer la fréquence d'apparition d'un nombre.
  • Bonjour,

    Oui, Bisam, mais tu aurais pu préciser que choice est dans random, et qu'il un importation préliminaire.

    Cordialement,

    Rescassol
  • Il faut que l’itérable puisse utiliser l’opérateur crochet avec dedans un index :
    >>> choice({1,2,3})
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.8/random.py", line 291, in choice
        return seq[ i]
    TypeError: 'set' object is not subscriptable
    >>> choice({1:1,2:2,3:3})
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.8/random.py", line 291, in choice
        return seq[ i]
    KeyError: 0
    >>> choice({0:None,1:1,2:2,3:3})
    2
    >>> choice({0:0,1:1,2:2,3:3})
    1
    >>> choice({"0":0,"1":1,"2":2,"3":3})
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.8/random.py", line 291, in choice
        return seq[ i]
    KeyError: 2
    

    [Ah ! Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. ;-) AD]
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
Connectez-vous ou Inscrivez-vous pour répondre.