帮我写一个可以生成20个随机数的代码,数据要保持正态分布
时间: 2023-03-06 16:57:56 浏览: 69
好的,您可以使用Python中的NumPy库来生成正态分布的随机数。下面是一个生成20个正态分布随机数的Python代码示例:
```python
import numpy as np
# 生成均值为0,标准差为1的正态分布随机数
mean = 0
std_dev = 1
num_samples = 20
random_numbers = np.random.normal(loc=mean, scale=std_dev, size=num_samples)
print(random_numbers)
```
在上面的代码中,`mean`和`std_dev`分别是正态分布的均值和标准差。`num_samples`是要生成的随机数的数量,可以根据需要进行更改。 `np.random.normal()`函数用于生成符合正态分布的随机数。函数中的参数`loc`表示均值,`scale`表示标准差,`size`表示生成的样本数。
运行上面的代码将会输出20个符合正态分布的随机数。
相关问题
请给我一个Fortran的代码,它的作用是生成服从正态分布的的随机数,并且保存生成的随机数。
下面是一个示例的 Fortran 代码,用于生成服从正态分布的随机数,并将生成的随机数保存到一个文件中:
```fortran
program generate_gaussian
implicit none
integer, parameter :: N = 1000 ! 生成的随机数数量
real(kind=8), parameter :: mu = 0.0 ! 均值
real(kind=8), parameter :: sigma = 1.0 ! 标准差
real(kind=8) :: data(N) ! 存储生成的随机数
integer :: i
call random_seed() ! 初始化随机数种子
! 生成随机数
call generate_gaussian_random(data, mu, sigma)
! 保存为dat文件
call save_data(data, 'gaussian.dat')
end program generate_gaussian
subroutine generate_gaussian_random(data, mu, sigma)
implicit none
real(kind=8), dimension(:), intent(out) :: data ! 存储生成的随机数
real(kind=8), intent(in) :: mu, sigma ! 正态分布的参数
integer :: i
call random_number(data)
data = mu + sigma * sqrt(-2.0 * log(data)) * cos(2.0 * acos(-1.0) * random_number())
end subroutine generate_gaussian_random
subroutine save_data(data, file_name)
implicit none
real(kind=8), dimension(:), intent(in) :: data ! 存储要保存的数据
character(len=*), intent(in) :: file_name ! 文件名
integer :: i
integer, parameter :: N = size(data)
integer, parameter :: unit_num = 10
open(unit=unit_num, file=file_name, status='replace')
do i = 1, N
write(unit_num, '(F8.4)') data(i)
end do
close(unit_num)
end subroutine save_data
```
这个代码定义了一个 `generate_gaussian` 程序,其中包括三个子程序:`generate_gaussian_random` 用于生成服从正态分布的随机数,`save_data` 用于将数据保存到文件中。
在 `generate_gaussian` 程序中,首先定义了生成的随机数数量 `N`、均值 `mu` 和标准差 `sigma`。然后调用 `random_seed()` 初始化随机数种子。接着调用 `generate_gaussian_random` 子程序生成服从正态分布的随机数。最后,调用 `save_data` 子程序将生成的随机数保存到一个名为 "gaussian.dat" 的文件中。
注意:这段代码使用了双精度实数类型 `real(kind=8)`,你可以根据需要进行调整。另外,这里使用的是逆变换法生成正态分布的随机数,但在实际应用中,可以使用更高效的随机数生成算法。
python怎么用正态分布生成20个一行俩列数据
可以使用numpy库中的random模块中的normal函数来生成正态分布的随机数,代码如下:
```python
import numpy as np
# 生成20个均值为0,标准差为1的正态分布随机数
data = np.random.normal(0, 1, (10, 2))
# 输出结果
print(data)
```
其中,np.random.normal函数的三个参数分别为均值、标准差和数据形状。在上面的代码中,我们生成了20个均值为0,标准差为1的正态分布随机数,并将其按照10行2列的形式输出。