2016-11-27 72 views
0

我需要从正态分布构造一个随机数的多元素数组(使用“Distributions”包)。我正在使用下面的代码。MethodError:无法匹配/(:: Int64,:: Array {Int64,1})当生成基于Julia中的正态分布的随机数

[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: no method matching /(::Int64,::Array{Int64,1})

任何想法上我如何才能使这个工作?

谢谢你的帮助。

-Alejandro布劳恩

编辑: 我改变d,以收集(1:32)。我在输入问题时犯了一个错误,对于可能造成的任何混淆,我表示歉意。

+3

这个错误信息只是意味着你试图用一个数组除去一个整数......大概你是想做相反的事情?话虽如此,当我尝试在上面运行你的代码时,我得到了一个完全不同的错误信息('没有方法匹配rand(:: Distributions.Normal {Float64},:: Int64,:: Float64)')(也就是说,重新尝试在定义您尝试生成的随机数组的大小时尝试使用Float而不是Int);大概是因为朱莉娅自动将int-by-int分割的结果转换为float。 –

+0

你想要得到什么样的形状?您不能将浮点数作为维度大小之一? –

+0

该代码似乎并未在给定的表单中运行。例如,'d [n]'是一个浮点小数,并且乘以'rand'生成的矩阵的宽度。 –

回答

2

不是100%确定你正在尝试做什么,但如果你强制数组大小是整数,它会给你一些东西(如果你改变你的数组d的大小)...更多信息?

a=rand(10) 
b=rand(5,32) 
c=5 
d=rand(5,32); 

[rand(Normal(0,a[end]+0.5*(1-b[n])),c,floor(Int,length(b[1,:])*d[n]/c)) for n=1:length(b)] 
+0

亚历山大,“地板”正是我所期待的。我犯了一个错误,说d是一组随机数(这是我的错误),但是你的代码创建了正确的数组。 –

相关问题