Matlab 到 Python rand() 的转换
Matlab to Python conversion of rand()
在 Matlab 中我有以下内容:
duration = 20
n=5
times = rand(1,n)*duration;
变量 "times" 给出了一个 1×n 矩阵,其中填充了 0 到 1 之间的随机数,然后乘以 20。这将产生一组 5 个 0 到 20 之间的数字.
现在我想在 Python 中实现相同的功能,等效的是什么?
我尝试了以下方法:
times = random.uniform(1,durations,n) %% or times = random.uniform(1,20,5)
但是我得到这个错误:
TypeError: uniform() takes exactly 3 arguments (4 given)
这对我来说没有意义,因为我似乎只给了它 3 个参数。
random.uniform
只接受你的随机数的上限和下限。您需要调用 random.uniform
n
次来创建随机值列表。
values = [random.uniform(0, 20) for _ in range(5)]
或者,您可以使用 numpy.random.rand
以类似于 MATLAB 的方式执行此操作,该函数将 return 一个 numpy 数组。
import numpy as np
values = np.random.rand(1, 5) * 20
如果您要将大量代码从 MATLAB 转换为 Python,建议使用 numpy
而不是使用标准数据类型,因为它的计算速度和与 MATLAB 类似的行为。
在 Matlab 中我有以下内容:
duration = 20
n=5
times = rand(1,n)*duration;
变量 "times" 给出了一个 1×n 矩阵,其中填充了 0 到 1 之间的随机数,然后乘以 20。这将产生一组 5 个 0 到 20 之间的数字.
现在我想在 Python 中实现相同的功能,等效的是什么? 我尝试了以下方法:
times = random.uniform(1,durations,n) %% or times = random.uniform(1,20,5)
但是我得到这个错误:
TypeError: uniform() takes exactly 3 arguments (4 given)
这对我来说没有意义,因为我似乎只给了它 3 个参数。
random.uniform
只接受你的随机数的上限和下限。您需要调用 random.uniform
n
次来创建随机值列表。
values = [random.uniform(0, 20) for _ in range(5)]
或者,您可以使用 numpy.random.rand
以类似于 MATLAB 的方式执行此操作,该函数将 return 一个 numpy 数组。
import numpy as np
values = np.random.rand(1, 5) * 20
如果您要将大量代码从 MATLAB 转换为 Python,建议使用 numpy
而不是使用标准数据类型,因为它的计算速度和与 MATLAB 类似的行为。