web-dev-qa-db-fra.com

échantillonnage de flotteurs aléatoires sur une plage de numpy

Comment puis-je échantillonner des flottants aléatoires sur un intervalle [a, b] dans numpy? Pas seulement des nombres entiers, mais des nombres réels. Par exemple,

random_float(5, 10)

renverrait des nombres aléatoires entre [5, 10]. Merci.

22
user248237

Le distribution uniforme ferait probablement ce que vous demandez.

np.random.uniform(5,10) # A single value
np.random.uniform(5,10,[2,3]) # A 2x3 array
40
Ken
import numpy as np
>>> 5 + np.random.sample(10) * 5
array([ 7.14292096,  6.84837089,  6.38203972,  8.80365208,  9.06627847,
        5.69871186,  6.37734538,  9.60618347,  9.34319843,  8.63550653]) 
4

sans numpy, vous pouvez le faire avec le module aléatoire.

import random
random.random()*5 + 10

renverra des nombres compris entre 10 et 15, en fonction:

>>> import random
>>> def random_float(low, high):
...     return random.random()*(high-low) + low
...
>>> random_float(5,10)
9.3199502283292208
>>> random_float(5,10)
7.8762002129171185
>>> random_float(5,10)
8.0522023132650808

random.random() renvoie un flottant de 0 à 1 (limite supérieure exclusive). le multiplier par un nombre lui donne une plus grande portée. ex random.random()*5 renvoie des nombres de 0 à 5. L'ajout d'un nombre à cela fournit une limite inférieure. random.random()*5 +10 renvoie des nombres de 10 à 15. Je ne sais pas pourquoi vous voulez que cela soit fait en utilisant numpy mais peut-être que j'ai mal compris votre intention.

2
Ryan Haining