sampling random floats on a range in numpy

前端 未结 3 783
-上瘾入骨i
-上瘾入骨i 2020-12-03 16:45

How can I sample random floats on an interval [a, b] in numpy? Not just integers, but any real numbers. For example,

random_float(5, 10)

would

相关标签:
3条回答
  • 2020-12-03 17:27

    without numpy you can do this with the random module.

    import random
    random.random()*5 + 10
    

    will return numbers in the range 10-15, as a function:

    >>> 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() returns a float from 0 to 1 (upper bound exclusive). multiplying it by a number gives it a greater range. ex random.random()*5 returns numbers from 0 to 5. Adding a number to this provides a lower bound. random.random()*5 +10 returns numbers from 10 to 15. I'm not sure why you want this to be done using numpy but perhaps I've misunderstood your intent.

    0 讨论(0)
  • 2020-12-03 17:31

    The uniform distribution would probably do what you are asking.

    np.random.uniform(5,10) # A single value
    np.random.uniform(5,10,[2,3]) # A 2x3 array
    
    0 讨论(0)
  • 2020-12-03 17:31
    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]) 
    
    0 讨论(0)
提交回复
热议问题