2016-11-27 23 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是一組隨機數(這是我的錯誤),但是你的代碼創建了正確的數組。 –

相關問題