Python生成指定區間中的隨機數

要求生成區間[a, b]中的隨機數。若要求為浮點數,則Python中只能近似達到這一要求,因為隨機函數的取值區間一般都為左閉右開區間,因為只能無限接近b。若要求為整數,那么將取數區間設置為[a,b+1)即可以取到b了。具體如下:


1. random()

numpy.random.random(size=None)

  • 生成[0.0, 1.0)的隨機數。注意區間是左閉右開,取不到1.0。
  • 生成的是浮點數。
  • 參數size可以用于指定生成隨機數的個數和形狀。例如
>>>import numpy as np
>>>np.random.random()
0.5312959368718575
>>>np.random.random(5)
array([ 0.2483017 ,  0.86182212,  0.03454678,  0.87525464,  0.31962688])
>>>np.random.random((2,3))
array([[ 0.66214521,  0.40083972,  0.05552421],
       [ 0.51091912,  0.6419505 ,  0.8757311 ]])

利用np.random.random()近似生成[a,b]的隨機數,因為前者的取值范圍是[0,1),是半開區間,所以右側端點處的值b取不到。

>>>import numpy as np
>>>a + (b-a)*np.random.random()

2. rand()

numpy.random.rand(d0, d1, ..., dn)

它和numpy.random.random(size=None)的主要區別就在于參數。例如生成2*3的array。注意觀察參數的形式。

>>>import numpy as np
>>>np.random.random((2,3))
array([[ 0.66214521,  0.40083972,  0.05552421],
       [ 0.51091912,  0.6419505 ,  0.8757311 ]])
>>>np.random.rand(2,3)
array([[ 0.59786635,  0.88902485,  0.7038246 ],
       [ 0.44150109,  0.73660019,  0.70001489]])

3. randint()

生成指定區間的隨機整數

numpy.random.randint(low, high=None, size=None, dtype='l')

具體介紹見:https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html

>>> np.random.randint(2,5)
3
>>> np.random.randint(2,5,3)
array([2, 3, 3])
>>> np.random.randint(2,5,9)
array([3, 4, 3, 2, 3, 3, 4, 4, 2])
>>> np.random.randint(2,5,(2,3))
array([[4, 3, 2],
       [3, 3, 4]])

注意:取值的區間仍然是左閉右開區間[low, high)
若要求取[a,b]中的隨機數,則

>>>np.random.randint(a, b+1)


該文章于2017年5月29日于CSDN上首次發表,2017年12月22日搬家至此!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容