randrange(start, stop)
prend uniquement des arguments entiers. Alors, comment pourrais-je obtenir un nombre aléatoire entre deux valeurs flottantes?
python
random
floating-point
Luge Mantis
la source
la source
np.random.uniform(start, stop)
ounp.random.uniform(start, stop, samples)
si vous vouliez plusieurs échantillons. Sinon, les réponses ci-dessous sont les meilleures.Réponses:
Utilisez random.uniform (a, b) :
la source
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
En d'autres termes, la sortieN
peut être égale à l'entréea
et àb
. Dans ce cas1.5
et1.9
..uniform
fonction, mais avec ou.random
ourandrange
?1.5 + random.random() * (1.9 - 1.5)
devrait le faire, même si selon les spécifications cela ne reviendra jamais exactement1.9
(même en théorie).uniform(a, b)
être implémenté commea + (b-a) * random()
et renvoie un nombre aléatoire dans la plage [a, b) ou [a, b] en fonction de l'arrondi github.com/python/cpython/blob/…random.uniform(a, b)
semble être ce que vous cherchez. De la documentation:Voyez ici .
la source
si vous voulez générer un flottant aléatoire avec N chiffres à droite du point, vous pouvez faire ceci:
le deuxième argument est le nombre de décimales.
la source
Le plus souvent, vous utiliseriez:
Python fournit d' autres distributions si vous en avez besoin.
Si vous avez
numpy
déjà importé, vous pouvez utiliser son équivalent:Encore une fois, si vous avez besoin d'une autre distribution,
numpy
fournit les mêmes distributions que python, ainsi que de nombreuses autres .la source