【发布时间】:2017-04-11 13:18:52
【问题描述】:
我需要从正态分布构造一个随机数的多元素数组(为此使用“分布”包)。我正在使用下面的代码。
[rand(Distributions.Normal(0,a[end]+0.5*(1-b[n])),c,length(b[1,:])*d[n]/c) for n=1:length(b)]
哪里(我在这个例子中使用随机数):
a=rand(10)
b=rand(5,32)
c=5
d=collect(1:32)
当我运行代码时,我收到以下错误消息:
MethodError: 没有方法匹配 /(::Int64,::Array{Int64,1})
关于如何让它发挥作用的任何想法?
感谢您的帮助。
-亚历杭德罗·布劳恩
编辑: 我将 d 更改为 collect(1:32)。我在输入问题时犯了一个错误,对于由此可能造成的任何混乱,我深表歉意。
【问题讨论】:
-
该错误消息仅表示您正在尝试将整数与数组相除...大概您打算做相反的事情?话虽如此,当我尝试在上面运行您的代码时,我收到一条完全不同的错误消息(
no method matching rand(::Distributions.Normal{Float64}, ::Int64, ::Float64))(即,您在定义随机数组的大小时尝试使用 Float 而不是 Int试图生成);大概是因为 julia 会自动将 int-by-int 除法的结果转换为浮点数。 -
你想得到什么形状?您不能将浮点数作为尺寸之一?!
-
代码似乎没有以给定的形式运行。例如,
d[n]是浮点小数,乘以rand生成的矩阵的宽度。 -
我进行了编辑,对于造成的任何混淆,我们深表歉意。 "d" 应该是 collect(1:5) 而不是 rand(5)。谢谢大家的帮助!