一、random模塊
python的random模塊中有一些生成隨機數字的方法,例如random.randint, random.random, random.uniform, random.randrange,這些函數大同小異,均是在返回指定範圍內的一個整數或浮點數,下邊簡單解釋一下這幾個函數。
from random import random
from random import randint
from random import uniform
from random import randrange
1、random.randint(low, hight)
參數:兩個參數,必須是整數(或者小數位是0的浮點數),並且第一個參數必須不大於第二個參數。
返回:一個位於[low,hight]之間的整數。
print(random.randint(1, 10)) # 1
print(random.randint(1.0, 10.0)) # 10
2、random.random()
參數:無
返回:一個[0.0, 1.0)之間的浮點數
print(random.random()) # 0.6033317596268343
3、random.uniform(val1, val2)
參數:a, b
返回:兩個數字區間的一個浮點數,[a, b) or [a, b] ,不要求val1小於等於val2
print(random.uniform(9.9, 2)) # 7.473451854502931
4、random.randrange(start, stop, step)
參數:以start開始,stop結束,step爲步長
返回:列表中的隨機整數,同樣,三個參數均爲整數(或者小數位爲0),若start大於stop時 ,setp必須爲負數.step不能是0.
print(random.randrange(1, 100, 2)) # 返回[1,100]之間的奇數
print(random.ranrange(100, 1, -2)) # 返回[100,1]之間的偶數
5、生成隨機數組
(1)random.randint包裝成隨機數組函數
(2)用random_int_list函數來生成一個隨機數組
def random_int_list(start, stop, length):
start, stop = (int(start), int(stop)) if start <= stop else (int(stop), int(start))
length = int(abs(length)) if length else 0
return [random.randint(start, stop) for _ in range(length)]
print(random_int_list(1, 100, 10)) # [2, 76, 29, 18, 23, 30, 7, 54, 3, 50]
二、使用numpy.random模塊
1、np.random.rand()
生成[0.0, 1.0)之間的隨機浮點數:
- 當沒有參數時,返回一個隨機浮點數;
- 當有一個參數時,返回該參數長度大小的一維隨機浮點數數組。
參數建議是整數型,因爲未來版本的numpy可能不支持非整形參數。
import numpy as np
print(type(np.random.rand(10))) # <class 'numpy.ndarray'>
print(np.random.rand(10))
# [0.53024223 0.94762199 0.46473904 0.90486894 0.67282802 0.76911074 0.87628994 0.76377193 0.74619824 0.82050551]
該函數還可以用於生成多維數組:
print(np.random.rand(2, 4)) # 生成2行4列矩陣
# [[0.3499704 0.32819639 0.87229577 0.17463467] [0.62080204 0.1809523 0.20208164 0.65036285]]
2、np.random.randn
生成一個標準正態分佈樣本。
print(np.random.randn(10))
# [ 0.76265712 0.10098226 -0.20581081 0.74839501 -0.27727696 -0.96841736 1.55343188 0.09188352 0.54306779 -0.21720579]
3、np.random.randint(low[, high, size])
返回隨機的整數,位於半開區間 [low, high)。
print(np.random.randint(10, size=10)) # [4 4 8 7 2 7 5 5 8 0]
4、random_integers(low[, high, size])
返回隨機的整數,位於閉區間 [low, high]。
print(np.random.random_integers(10, size=10)) # [7 2 2 7 4 1 6 9 3 9]
5、np.random.shuffle(x)
類似洗牌,打亂順序。
arr = np.arange(10)
print(np.random.shuffle(arr)) # None
print(arr) # [5 7 8 0 3 4 6 9 1 2]
6、np.random.permutation(x)
參數:x 是 int or array_like
返回一個隨機排列。
(1)If `x` is an integer, randomly permute ``np.arange(x)``.
print(np.random.permutation(10)) # [0 4 9 6 1 8 5 7 3 2]
(2)If `x` is an array, make a copy and shuffle the elements randomly.
print(np.random.permutation([0, 4, 9, 6, 1, 8, 5, 7, 3, 2])) # [8 2 9 7 4 0 1 6 3 5]
arr = np.arange(9).reshape((3, 3))
print(arr) # [[0 1 2] [3 4 5] [6 7 8]]
print(np.random.permutation(arr)) # [[6 7 8] [0 1 2] [3 4 5]] 只打亂行序
參考鏈接:https://blog.csdn.net/healthy_coder/article/details/50502643