//: [Previous](@previous) // Xcode で Editor メニュー > Show Render Markup でお読みください //import UIKit /*: # 中学1年の数学 */ /*: ## 資料の整理と活用 */ let 資料の個数 = 6 * 100 var 全度数 = [ 0, // 🀙 0, // 🀚 0, // 🀛 0, // 🀜 0, // 🀝 0, // 🀞 ] // 出たサイコロの目の数を入れておく配列 var 全資料 = [Int]() var サイコロの目の合計 = 0 var 最大値: Int!, 最小値: Int! for _ in 0..<資料の個数 { // サイコロを振る let サイコロの目 = Int.random(in: 1...6) //print(サイコロの目) 全度数[サイコロの目 - 1] += 1 サイコロの目の合計 = サイコロの目の合計 + サイコロの目 if 最大値 == nil { 最大値 = サイコロの目 } else if 最大値 < サイコロの目 { 最大値 = サイコロの目 } if 最小値 == nil { 最小値 = サイコロの目 } else if サイコロの目 < 最小値 { 最小値 = サイコロの目 } 全資料.append(サイコロの目) } print("サイコロの目の合計: \(サイコロの目の合計)") print("サイコロの目の平均値(サイコロの目の合計/資料の個数): \(サイコロの目の合計/資料の個数)") for (番号, 度数) in 全度数.enumerated() { 度数 print("サイコロの目: \(番号 + 1), 度数: \(度数)(回)") } var 累積度数 = 0 for (番号, 度数) in 全度数.enumerated() { 累積度数 = 累積度数 + 度数 print("サイコロの目: \(番号 + 1), 累積度数 \(累積度数)(回)") } print("さいごの累積度数: \(累積度数)(回), 資料の個数: \(資料の個数)(個)") /*: 相対度数はその階級の度数÷度数の合計 */ for (番号, 度数) in 全度数.enumerated() { let 階級値 = 番号 + 1 let 相対度数 = Double(度数) / Double(資料の個数) print("サイコロの目: \(階級値), 相対度数 \(相対度数)(⋅)") } var 階級値掛ける度数の合計 = 0 for (番号, 度数) in 全度数.enumerated() { let 階級値 = 番号 + 1 階級値掛ける度数の合計 = 階級値掛ける度数の合計 + 階級値*度数 } print("平均値(階級値掛ける度数の合計/累積度数): \(階級値掛ける度数の合計/累積度数)") /*: 中央値(メジアン)は資料をその値の大きさの順に並べたとき、 * 度数の合計(資料の個数)が奇数のとき、その中央の順位にくる値、 * 度数の合計(資料の個数)が偶数のとき、その中央の2つの値の平均値 である。 例えば、 資料の個数が 5 の場合: [ 1, 2, 3, 4, 5 ] の 3 資料の個数: 6 の場合: [ 1, 2, 3, 4, 5, 6 ] の 3 */ let 並び替えられた全資料 = 全資料.sorted() if !資料の個数.isMultiple(of: 2) { print("資料の個数/2: \(資料の個数/2), 中央値: \(並び替えられた全資料[資料の個数/2])") } else { print("資料の個数/2: \(Double(資料の個数)/2), 中央値: \(Double(並び替えられた全資料[資料の個数/2 - 1] + 並び替えられた全資料[資料の個数/2]) / 2)") } /*: 最頻値(モード)は資料の値のうち最も多く現れる値である。 */ var 最頻値 = 0 + 1, 最大度数 = 全度数[0] for (番号, 度数) in 全度数.enumerated() { if 最大度数 < 度数 { 最頻値 = 番号 + 1 最大度数 = 度数 } } print("最大度数: \(最大度数) 最頻値: \(最頻値)") /*: 範囲(レンジ)は資料の値の最大値と最小値の値の差である。 サイコロの場合、6 - 1 = 5 であると決め付けてはならない。資料としては 1 が出なかった稀な場合や 6 が出なかった稀な場合も考慮に入れる必要がある。 */ var 範囲 = 最大値 - 最小値 print("最大値: \(String(describing: 最大値))") print("最小値: \(String(describing: 最小値))") print("範囲: \(範囲)") //: もしくは、 範囲 = 並び替えられた全資料[資料の個数 - 1] - 並び替えられた全資料[0] print("最大値: \(並び替えられた全資料[資料の個数 - 1])") print("最小値: \(並び替えられた全資料[0])") print("範囲: \(範囲)") //: [Next](@next)