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 类似的行为。