看板 NTUEE106 關於我們 聯絡資訊
演算主要步驟 : 1. 選擇某一年級的必修課程 , 開始分發運算 2. 取得此年級的課程 , 並依序使用亂數排序產生單科選課結果 3. 計算 "志願總值" , "志願平方和的總值" , 並判斷最差狀況 , 以決定是否採用這次產生的選課結果 4. 重複步驟 2 , 3 數次以上 針對步驟 2 , 詳細的演算法 : 1. 建立有選此課程的帳號清單 , 並標記哪些帳號有填志願 , 哪些未填志願 3. 取得此課程的選項個數 , 計算每個選項的人數上限 4. 開始分發 : 先處理有填寫志願的帳號 迴圈一 (控制變數 : 志願值 i = 1 to n) { 迴圈二 (控制變數 : 選項值 j = 1 to n) { 亂數建立一帳號清單 (其帳號對選項 j 所填的志願為 i) 若此選項(j)尚未達到人數上限 且 此帳號尚未被分發 { 則分發成功 , 此帳號在此課程選得的選項為 j , 為第 i 志願 } } } 再處理未填寫志願的帳號 亂數配給課程 , 填入尚有剩餘名額的選項 , 細節不詳述 針對步驟 3 , 說明 : 志願總值 為所有人選得的課程選項的志願之總和 即上述演算法說明中 , 紅色字樣之 i 值的總和 代表意義 : 選課結果總體優劣層度 志願平方和的總值 為個人選得的所有課程選項的志願總和 , 平方後 , 再將所有人加總 即紅色字樣之 i 值 , 個人所有課程志願總和平方後 , 所有人再加總 代表意義 : 選課結果個人與個人之間差異度 最差狀況 一帳號在此年級所有課程皆被分發到最後志願的選項即為最差狀況 判斷 若出現最差狀況則一律捨棄這次新產生的結果 若沒有出現最差狀況 , 且新產生之結果的 "志願總值" 和 "志願平方和的總值" 皆小於或等於目前保留的選課結果 , 則採用新的選課結果 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.20.246