用 numpy 方法产生分布于[2, 5)之间的随机数 50 个,并将其转换成 10 行 5 列的数据矩阵,绘制出 bins=10 的直方图
时间: 2024-02-25 20:56:23 浏览: 20
可以使用numpy中的random模块中的rand函数生成分布于[2, 5)之间的随机数。然后使用reshape函数将其转换成10行5列的数据矩阵,最后使用matplotlib中的hist函数绘制直方图。
下面是代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成50个分布于[2, 5)之间的随机数
data = np.random.rand(50) * 3 + 2
# 将数据转换成10行5列的数据矩阵
data_matrix = data.reshape(10, 5)
# 绘制直方图
plt.hist(data, bins=10)
# 添加标题和标签
plt.title('Random number histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 显示图像
plt.show()
```
这段代码会生成50个分布于[2, 5)之间的随机数,并使用reshape函数将其转换成10行5列的数据矩阵。然后使用plt.hist函数绘制直方图,设置bins参数为10。最后,添加标题和标签,并使用plt.show函数显示图像。
相关问题
用 numpy 方法产生标准正态分布的随机数 100 个,并将其转换成 10 行 10 列的数据矩阵,绘制出 bins=10 的直方图,多次运行程序观察图形的效果; 然后利用种子方法产生同样的随机数,再观察数据以及直方图的效果。 同样地,用 scipy.stats 方法产生以上的随机数,并绘制出对应的直方图, 在 stats 方法中用参数 random_state 观察效果,并将正态分布的累计分布函数曲线绘制出来。
好的,以下是代码实现:
使用 numpy 产生标准正态分布的随机数 100 个,并将其转换成 10 行 10 列的数据矩阵,绘制出 bins=10 的直方图,多次运行程序观察图形的效果:
```python
import numpy as np
import matplotlib.pyplot as plt
# 产生标准正态分布的随机数 100 个
data = np.random.randn(100)
# 将其转换成 10 行 10 列的数据矩阵
data_matrix = data.reshape(10, 10)
# 绘制出 bins=10 的直方图
plt.hist(data, bins=10)
plt.show()
```
使用种子方法产生同样的随机数,再观察数据以及直方图的效果:
```python
import numpy as np
import matplotlib.pyplot as plt
# 使用种子方法产生同样的随机数
np.random.seed(0)
data = np.random.randn(100)
# 将其转换成 10 行 10 列的数据矩阵
data_matrix = data.reshape(10, 10)
# 绘制出 bins=10 的直方图
plt.hist(data, bins=10)
plt.show()
```
使用 scipy.stats 方法产生以上的随机数,并绘制出对应的直方图, 在 stats 方法中用参数 random_state 观察效果,并将正态分布的累计分布函数曲线绘制出来:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 产生标准正态分布的随机数 100 个
data = norm.rvs(size=100, random_state=0)
# 绘制出 bins=10 的直方图
plt.hist(data, bins=10)
plt.show()
# 绘制正态分布的累计分布函数曲线
x = np.linspace(-3, 3, 100)
plt.plot(x, norm.cdf(x))
plt.show()
```
以上就是实现代码,希望对你有帮助。
利用randn函数产生5*4的均值为0,方差为2的高斯分布的随机数
可以使用Python中的NumPy库中的random模块的randn函数来生成符合高斯分布的随机数。代码如下:
```python
import numpy as np
# 生成5x4的随机数矩阵,均值为0,方差为2
arr = np.random.randn(5, 4) * np.sqrt(2)
print(arr)
```
输出结果为:
```
[[ 0.07626949 -0.51417518 -1.68210862 -0.8506313 ]
[-0.50080261 -0.03138047 -0.03351029 -1.17222368]
[ 1.05579855 0.88565761 -0.08101442 0.05040363]
[-0.26060254 -0.80842775 -0.57806503 -0.21950399]
[ 0.06889456 0.93077525 -1.04700734 -1.52620115]]
```
其中,np.random.randn(5, 4)生成一个5行4列的矩阵,每个元素都是从标准正态分布中随机采样得到的;而 * np.sqrt(2)是为了将标准正态分布转换为均值为0,方差为2的高斯分布。