Algorithm 隨機發牌

2021-07-24 22:16:51 字數 960 閱讀 9687

從card[51]開始扁歷,把當前的card 與card[rand.nextint(51)]交換,遍歷一次後,也就隨機得差不多了

對於52張牌,實現乙個隨機打算撲克牌順序的程式。52張牌使用int陣列模擬。

該演算法的難點是如何保證隨機性?有個經典演算法shuffle,思路就是遍歷陣列,在剩下的元素裡再隨機取乙個元素,然後再在剩下的元素裡再隨機取乙個元素。每次取完元素後,我們就不會讓這個元素參與下一次的選取。

1

2

3

4

to shuffle 

an array

aof n elements (indices

0..n

-1):

for i

from n −

1 downto

1do j ←

random

integer

with

0 ≤ j ≤ i

exchange

a[j]

anda[i]

注意這兒是0 ≤ j ≤ i,包括j=i的情況,因為可能洗牌後某個牌未發生交換,比如第51張牌還是原來的第51張牌。

1

2

3

4

5

6

7

8

9

10

11

public

void

randomcards

()

}

隨機打亂 隨機發牌

一.產生乙個隨機數 1.new random nextint 10 0,10 的隨機數 2.二.如何打亂乙個陣列或隨機排序,除了 random之外collections.shuffle非常方便,且效率高。可以實現隨機打亂列表的功能,實現把員工 順序 打亂等,安全傳輸方面,比如傳送加密前,把資料隨機打...

隨機發牌 物件導向版鬥地主發牌(集合實現)

需求 需求是不是看著很簡單,就幾行字。建議先對著需求自己想想該如何去實現。分析 這裡小白需要注意,包括我自己,你千萬別認為要構思出所有的實現細節才著手寫。我寫的過程中像第四第五點都是後面寫的過程中才碰到的。有了大概思路就可以嘗試了。告訴自己我先寫三分鐘試試。首先是poker類 public clas...

撲克牌的隨機發牌程式

乙個撲克牌遊戲 準確的說就是 鬥地主 本來是打算取0 53的隨機數,取過的就做乙個標識,迴圈直至全部完。但是細想一下,效率實在是太低了,最後決定用亂序的方式,感覺還不錯。不知道還有沒有更好的辦法,請大家多多指教!using system using system.collections namesp...