python常用random随机函数汇总,用法详解及函数之间的区别--一图了解python随机函数

python中常用的随机函数的用法汇总分类以及相似函数之间的区别:
一图了解python的随机函数
在这里插入图片描述

1. 常用的随机函数总结介绍

1. random.random(): 返回随机生成的一个浮点数,范围在[0,1)之间

2. random.uniform(a, b): 返回随机生成的一个浮点数,范围在[a, b)之间

3. np.random.rand(d0, d1, …, dn): 返回一个或一组浮点数,范围在[0, 1)之间

4. np.random.normal(loc=a, scale=b, size=()): 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数

5. np.random.randn(d0, d1, … dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数

6. np.random.standard_normal(size=()): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数

7. random.sample(k): 从总体序列或集合中随机选取k个唯一的元素

8. np.random.randint(a, b, size=(), dtype=int): 返回在范围在[a, b)中的随机整数(含有重复值)

9. random.randrange(a, b, step=c): 在指定范围内,在指定的基数和步长值形成的集合中获取1个随机数值

10. random.choice(x): 从指定的序列x中随机获取一个数据

11. random.shuffle(x): 将一个列表x中的元素打乱,随机排序(俗称:洗牌)

12. random.seed(): 设定随机种子

2. 示例代码(python)

1. random.random() - 返回随机生成的一个浮点数,范围在[0,1)之间

import numpy as np
import pandas as pd
import random

# 随机生成一个在[0, 1)范围的浮点数
x = random.random()
print(x, type(x))

0.5714025946899135 <class ‘float’>

2. random.uniform(x, y) - 返回随机生成的一个浮点数,范围在[x, y)之间

# 随机生成一个在[15.0, 20.0)之间的浮点数
x = random.uniform(15.0, 20.0)
print(x, type(x))

17.144445273375574 <class ‘float’>

3. np.random.rand(d0, d1, …, dn) - 返回一个或一组浮点数,范围在[0, 1)之间

x = np.random.rand()
y = np.random.rand(2)
print(x, type(x))
print(y, type(y))

在这里插入图片描述
小结:np.random.rand()的用法与random.random()相似,都是返回范围在[0, 1)之间的随机浮点数。唯一不同的是,random.random()只能返回一个随机数;而np.random.rand()则可以根据设置返回多个数据。

4. np.random.normal() - 返回正态分布(高斯分布)的概率密度随机数

# np.random.normal(loc=a, scale=b, size=()) - 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数,size默认为None(返回1个随机数),也可以为int或数组
x = np.random.normal(10, 0.2, 2)
y = np.random.normal(0, 0.1, (2, 3))
print(x, type(x))
print(y, type(y))

在这里插入图片描述
5. np.random.randn() - 返回标准正态分布的概率密度随机数

# np.random.randn(d0, d1, ... dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数, 
x = np.random.randn()
y = np.random.randn(3)
z = np.random.randn(2, 2)
print(x, type(x))
print(y, type(y))
print(z, type(z))

在这里插入图片描述
6. np.random.standard_normal() - 返回标准正态分布的概率密度随机数

# np.random.standard_normal(): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数, size默认为None(返回1个随机数),也可以为int或数组
x = np.random.standard_normal()
y = np.random.standard_normal(size=(2,2))
print(x, type(x))
print(y, type(y))

在这里插入图片描述
小结:上述可见np.random.rand()与np.random.standard_normal()的方法结果相似,都是返回合符标准正态分布的随机浮点数或数组。

7. random.sample(k) - 在总体序列或集合中返回k个唯一的随机元素(不包含重复值)

# 从0-10的序列中返回5个不重复的随机数字
x = random.sample(range(0, 10), 5)
print(x, type(x))

[9, 0, 6, 3, 4] <class ‘list’>

8. np.random.randint(a, b, size=(), dytpe=int) - 返回在范围在[a, b)中的一组随机整数(包含重复值)

# np.random.randint(a, b, sizie=(), dytpe=int) - size默认为None(返回1个随机数),也可以为int或数组
# 从序列[0, 10)之间返回shape=(2,5)的10个随机整数(包含重复值)
x = np.random.randint(0, 10, size=(2, 5))
# 从序列[15, 20)之间返回1个随机整数(size默认为None, 则返回1个随机整数)
y = np.random.randint(15, 20)
print(x, type(x))
print(y, type(y))

在这里插入图片描述
小结:random.sample()与np.random.randint()的最大区别在于,random.sample()返回的是唯一的随机元素,即不含有重复值;而np.random.randint()是返回含有重复值的随机数值。

9. random.randrange(a, b, step=c) - 在指定范围内,在指定的基数和步长值形成的集合中获取1个随机数值

# 在[6, 16]范围内,在6的基础上按步长=3形成的递增集合中获取1个随机数
x = random.randrange(6, 16, 3)
print(x, type(x))

15 <class ‘int’>

10. random.choice(x) - 从指定的序列x中随机获取一个数据

# 从x列表中随机返回一个数值
x = [100, 20, 90, 5, 12]
print(random.choice(x))

90

11. random.shuffle(x) - 将一个列表x中的元素打乱,随机排序(俗称:洗牌)

# 将x列表中的元素打乱并重新随机排序
x = [1, 2, 3, 4, 5]
random.shuffle(x)
print(x)

[3, 4, 2, 1, 5]

12. random.seed() - 设定随机种子

# 在设定随机种子为10之后,random.random()的随机数将被直接设定为:0.5714025946899135
random.seed(10)
x = random.random()
x

0.5714025946899135

3. 结束语

总结上述随机函数的相似或区别地方:

  1. np.random.rand()的用法与random.random()相似,都是返回范围在[0, 1)之间的随机浮点数。唯一不同的是,random.random()只能返回一个随机数,而np.random.rand()则可以根据设置返回多个数据。
  2. np.random.rand()与np.random.standard_normal()的方法结果相似,都是返回合符标准正态分布的随机浮点数或数组。
  3. random.sample()与np.random.randint()的最大区别在于,random.sample()返回的是唯一的随机元素,即不含有重复值;而np.random.randint()是返回含有重复值的随机数值。
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值