为什么以下函数定义会产生以下错误:
Julia MethodError: no method matching take!(::Base.AbstractIOBuffer{Array{UInt8,1}} )
function CoinTrials(x,y; numtrials=100000, numcoins=5 )
Yes=[]
No=[]
for trial in 1:numtrials
trialresults=[]
for coin in 1:numcoins
result = rand(1,2)
push(vec,trialresults)
end
if len(filter(x->x==1,trialresults)) >=3
Yes+=1
else
No+=1
end
end
@printf(Yes,No)
end
答案 0 :(得分:2)
function CoinTrials(x,y; numtrials=100000, numcoins=5 )
...您似乎没有使用x
或y
,所以我不确定他们为什么会来这里。
Yes=[]
No=[]
...因为你以后加1,为什么不制作这些整数计数器呢?
for trial in 1:numtrials
trialresults=[]
for coin in 1:numcoins
result = rand(1,2)
...这会产生一个由0和1之间的两个随机Float64组成的数组。你想要一个数组还是一个数字?
push(vec,trialresults)
...没有push
功能。有一个push!
函数。您是否希望push!(trialresults, result)
将最新试用版添加到试用结果列表中?
end
if len(filter(x->x==1,trialresults)) >=3
...没有len
功能。有一个length
函数。但是,trialresults
中找不到Float64s。
Yes+=1
else
No+=1
end
end
@printf(Yes,No)
...你想要一个格式字符串:@printf "%d %d" Yes No
end