利用torch.distributions生成一些满足不同分布的随机数

利用torch.distributions生成一些满足不同分布的随机数

# 导入工具包
import torch.distributions.log_normal as log_normal
import torch.distributions.normal as normal
import torch.distributions.uniform as uniform
import torch.distributions.bernoulli as bernoulli
import matplotlib.pyplot as plt
# 生成平均值为0.5,标准差为0.25的对数正态分布随机数
log_nor_data = log_normal.LogNormal(torch.tensor([np.log(0.5)]),0.25)
print(type(log_nor_data))

# 利用flatten()对多维数组进行降维
log_nor_data = log_nor_data.sample(sample_shape=(1000,1)).flatten() 

# 画出log_nor_data的频率分布直方图
plt.hist(log_nor_data)
plt.xlabel('log_nor_data intervel')
plt.ylabel('log_nor_data frequency')
plt.show()

在这里插入图片描述

# 生成平均值为0.5,标准差为0.25的正态分布随机数
nor_data = normal.Normal(torch.tensor([0.5]),0.25)
print(type(nor_data))

# 利用flatten()对多维数组进行降维
nor_data = nor_data.sample(sample_shape=(1000,1)).flatten() 

# 画出nor_data的频率分布直方图
plt.hist(nor_data)
plt.xlabel('nor_data intervel')
plt.ylabel('nor_data frequency')
plt.show()

在这里插入图片描述

# 生成取值区间为[0,1]的均匀分布随机数
uni_data = uniform.Uniform(0,1)
print(type(uni_data))
# 利用flatten()对多维数组进行降维
uni_data = uni_data.sample(sample_shape=(1000,1)).flatten() 

# 画出uni_data的频率分布直方图
plt.hist(uni_data)
plt.xlabel('uni_data intervel')
plt.ylabel('uni_data frequency')
plt.show()

在这里插入图片描述

# 生成一组满足伯努力分布的随机数,且满足出现1的概率为80%,出现0的概率为20%
ber_data = bernoulli.Bernoulli(0.8)
print(type(ber_data))
# 利用flatten()对多维数组进行降维
ber_data = ber_data.sample(sample_shape=(1000,1)).flatten() 

# 画出ber_data的频率分布直方图
plt.hist(ber_data)
plt.xlabel('ber_data intervel')
plt.ylabel('ber_data frequency')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值