# 使用均勻分佈亂數產生1000個 身高 樣本,取值範圍為 [0,1)
heights = rand(Float64, 1000)
# 使用均勻分佈亂數產生1000個 體重 樣本,取值範圍為 [0,1)
weights = rand(Float64, 1000)
# 將 身高 資料映射到 [1.5, 1.8) 米
heights = heights .* (1.8-1.5) .+ 1.5
# 將 體重 資料映射到 [30, 100) 千克
weights = weights .* (100-30) .+ 30
# 定義BMI指數計算函數
bmi(w, h) = w / (h^2)
# 計算1000個樣本的BMI指數
indexes = broadcast(bmi, weights, heights)
# 或者以下面的語句替代上述的兩個語句
# indexes = weights ./ (heights.^2)
# 對BMI指數進行分類
# 1-體重過低,2-正常範圍,3-肥胖前期,4-I度肥胖,5-II度肥胖,6-III度肥胖
function bmi_category(index::Float64)
class = 0
if index < 18.5
class = 1
elseif index < 24
class = 2
elseif index < 28
class = 3
elseif index < 30
class = 4
elseif index < 40
class = 5
else
class = 6
end
class # 返回分類編號
end
# 計算每個樣本的BMI分類
classes = bmi_category.(indexes)
# 統計每個類別的數量
for c in [1 2 3 4 5 6] # 遍歷6個類別,c為類別ID
n = count(x->(x==c), classes) # x->(x==c)為匿名函數
println("category ", c, " ", n) # 列印結果
end
輸出畫面
$julia main.jl
category 1 310
category 2 213
category 3 161
category 4 76
category 5 219
category 6 21
沒有留言:
張貼留言