Matlab 到 Python 的 rand() 函数转换

3
在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)

但是我得到了这个错误:

类型错误:uniform()需要3个参数,但给出了4个

这对我来说没有意义,因为我似乎只给了它3个参数。
1个回答

6

random.uniform 只接受您的随机数的上限和下限。您需要调用 random.uniform n 次,才能创建一个随机值列表。

values = [random.uniform(0, 20) for _ in range(5)]

另外,您可以使用numpy.random.rand来类似于MATLAB地实现此操作,并且该函数将返回一个NumPy数组。

import numpy as np
values = np.random.rand(1, 5) * 20

如果你正在将大量的MATLAB代码转换为Python,建议使用numpy而不是标准数据类型,因为它具有计算速度快且类似于MATLAB的行为。


非常感谢您的解释和解决方案!确实,这个方法可行,我已经尝试了numpy版本! - Spica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接