亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于紅包總金額問題

https://img1.sycdn.imooc.com//5c80d90d0001b28e10120783.jpg

https://img1.sycdn.imooc.com//5c80d90e00010ce517970769.jpg

后洗牌算法產生的紅包序列總額( 9990 )跟發紅包的總金額(10000)不一致 , 是因為在計算最大可調度金額時減去 min * count , 導致紅包金額總小于總金額? 有沒有大神解釋一下這是為什么?

正在回答

3 回答

@misaki_rain?很認真的一位同學,實際上通過這個bug,也可以更深刻的理解最小金額的意義。除了生成序列還進一步對生成的結果做了一些驗證,這些思考和驗證方法可以進一步使用自動化測試來驗證,實際上后洗牌算法在課程中沒有編寫自動化測試來驗證,沒有測試就有bug,也說了測試的重要性。非常感謝@misaki_rain的問題,非常棒!???

0 回復 有任何疑惑可以回復我~
#1

qq_氵_cmwyIU

aaa
2019-03-14 回復 有任何疑惑可以回復我~
#2

qq_氵_cmwyIU 回復 qq_氵_cmwyIU

aaa
2019-03-14 回復 有任何疑惑可以回復我~
#3

慕婉清5328337

確切來說,應該算是最大可調度金額的重復計算吧,?
2019-04-19 回復 有任何疑惑可以回復我~
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,已屬畫蛇添足了;
0 回復 有任何疑惑可以回復我~

在aftershuffle中 inds = append(inds, x)應該改為inds = append(inds, x + min) 總金額就一樣的了? 圖中代碼一個bug? 打擾了

1 回復 有任何疑惑可以回復我~
#1

大大大大丶V

這種方式產生的數據沒有1了。準確的做法應該是在after_shuffle.go計算最大可調度金額時不需要減1,因為simple_random中已經減了1
2019-03-26 回復 有任何疑惑可以回復我~
#2

慕UI8290743 回復 大大大大丶V

inds = append(inds, x + min) 就是正確的啊,不太清楚你在講啥
2020-02-11 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于紅包總金額問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號