課程
/后端開發
/Go
/3小時極簡春節搶紅包之Go的實戰
后洗牌算法產生的紅包序列總額( 9990 )跟發紅包的總金額(10000)不一致 , 是因為在計算最大可調度金額時減去 min * count , 導致紅包金額總小于總金額? 有沒有大神解釋一下這是為什么?
2019-03-07
源自:3小時極簡春節搶紅包之Go的實戰 6-9
正在回答
@misaki_rain?很認真的一位同學,實際上通過這個bug,也可以更深刻的理解最小金額的意義。除了生成序列還進一步對生成的結果做了一些驗證,這些思考和驗證方法可以進一步使用自動化測試來驗證,實際上后洗牌算法在課程中沒有編寫自動化測試來驗證,沒有測試就有bug,也說了測試的重要性。非常感謝@misaki_rain的問題,非常棒!???
qq_氵_cmwyIU
qq_氵_cmwyIU 回復 qq_氵_cmwyIU
慕婉清5328337
func?AfterShuffle(count,amount?int64)?[]int64?{ ???var?( ??????inds?[]int64 ??????remain?int64 ???) ???//計算最大可調度金額 ???//max?:=?amount-min*count ??? ???remain?=?amount ???for?i:=int64(0);i<count;i++{ ???????x?:=?SimpleRand(count-i,remain) ???????remain?-=x ???????inds?=?append(inds,x) ???} ???.... 總結以上盆友,已在"簡單隨機算法SimpleRand"計算了最大可調度金額,故:此處再計算max,已屬畫蛇添足了;
在aftershuffle中 inds = append(inds, x)應該改為inds = append(inds, x + min) 總金額就一樣的了? 圖中代碼一個bug? 打擾了
大大大大丶V
慕UI8290743 回復 大大大大丶V
舉報
【畢業設計】春節搶紅包業務資金交易秒殺系統的架構設計和Golang實戰
6 回答已設置 rand 的種子,但輸出紅包金額相同
2 回答每次隨機金額都一樣
1 回答每個算法的最后結果的金額都有問題吧?
3 回答加了種子之后,為什么變成相同的金額
2 回答紅包算法結果合值對不上
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-03-07
@misaki_rain?很認真的一位同學,實際上通過這個bug,也可以更深刻的理解最小金額的意義。除了生成序列還進一步對生成的結果做了一些驗證,這些思考和驗證方法可以進一步使用自動化測試來驗證,實際上后洗牌算法在課程中沒有編寫自動化測試來驗證,沒有測試就有bug,也說了測試的重要性。非常感謝@misaki_rain的問題,非常棒!???
2019-04-19
2019-03-07
在aftershuffle中 inds = append(inds, x)應該改為inds = append(inds, x + min) 總金額就一樣的了? 圖中代碼一個bug? 打擾了