PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
Re: [心得] 樸克牌13支
作者:
aqtx4869
(死神之藥)
2014-04-19 16:59:38
爬舊文想說充實一下自己的想法
文章有點舊
(是對於洗牌的寫法)
但對於stonehomelaa版友提出來的第二個方法有點疑問
為什麼被對換的牌是
j = rand() % (52-i);
而不是
j = rand() % (52);
是都可以嗎? 還是這樣做會出現問題?
※ 引述《stonehomelaa (cousin)》之銘言:
: ※ 引述《papalun (謎樣人物)》之銘言:
: : for (i=0;i<52;i++)
: : {
: : j=rand()%52;
: : temp=A[i];
: : A[i]=A[j];
: : A[j]=temp;
: : }
: 本來我也認為打亂陣列是這麼做的
: 不過之前看了深度學習C++網站上的試讀章節
: 裡面範例有提到兩種做法
: 其一是陣列元素由後往前與其前的隨機位置對調
: for (i = 52 - 1; i > 0; i
作者: LiloHuang (十年一刻)
2014-04-19 17:10:00
Fisher-Yates shuffle 演算法
http://goo.gl/gNiuwb
發現連結有點弄錯,
http://goo.gl/A3oR1x
這個才對如果是用 % 52 來做會跟演算法本質不一致,機率會不均勻是的,只是這樣意義就不大了,跟演算法本質就不同 XD
作者:
stimim
(qqaa)
2014-04-19 18:01:00
最簡單的想法是,均勻洗牌有52!種結果,rand()%52 有 52^52種「過程」,所以一定不是均勻分佈
作者:
LPH66
(-6.2598534e+18f)
2014-04-20 01:48:00
52-i 可以理解成我每次從剩下的牌堆抽一張出來放好那個剩下的牌堆的張數就是 52-i唔, 仔細看了一下確實如你所說, 要 +i 才是對的
繼續閱讀
Re: [問題] 讀取UTF-8編碼
descent
[問題] 執行緒退出
WashFreeID
[問題] 讀取UTF-8編碼
wsx100
[問題] 定點運算解法
hn85469388
Re: [問題] C++ std::to_string無法編譯
suhorng
[問題] sscanf 16進位
enjoy222
[問題] 求"貓也會的windows程式設計"一書
youneverknow
[問題] linux 下設計滑鼠連點程式
Arim
[問題] 請問如何print此陣列
AppleGod
[問題] C++ std::to_string無法編譯
deangogi
Links
booklink
Contact Us: admin [ a t ] ucptt.com