python生成随机数组-多种方法

一、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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章