質問: [31.0,31.3,31.7,31.7,32.3,33.8,34.0,35.2,35.2,38.8,38.8,39.6,39.7] puts "メジアンは #{median(ar1)}です。" puts "メジアンは #{median(ar2)}です。" 実行結果 正しい結果 メジアンは 34.25です。 メジアンは 35.5です。 私の結果 メジアンは 30.65です。 メジアンは 35.5です。
回答: プログラムをすこし変更してみました。 a.rb ``` def median(data) len = data.size if len % 2 == 1 return data[(len) / 2] else return (data[len / 2 - 1] + data[len / 2]) / 2 end end # Main ####### ar1 = [ 30.9, 31.8, 32.0, 32.7, 32.8, 33.1, 34.2, 35.3, 36.2, 39.1, 39.2, 39.8 ] ar2 = [ 31.0, 31.3, 31.7, 31.7, 32.3, 33.8, 34.0, 35.2, 35.2, 38.8, 38.8, 39.6, 39.7] puts "メジアンは #{median(ar1)} です。" puts "メジアンは #{median(ar2)} です。" ``` 実行結果 ``` $ ruby a.rb メジアンは 33.650000000000006 です。 メジアンは 34.0 です。 ``` ar1 のデータ内容は、課題のものと合っていますか? 再確認をお願いします。 質問文では、ar1 の median のプログラムでの計算結果が 30.35 となっています。 でも ar1 は 30.9 から始まっているので、 計算結果は 30.9 より大きな数となるはずなのですが ....