洗撲克演算法
⑴ 幾種撲克牌洗牌演算法
洗牌的
幾種話先設定好洗牌方式幾種比方對分上下交l以及交織洗牌然撲克牌後用隨機數生成函數確定單步洗牌作牌的數量多反復幾遍即可。
的一個合理的定義就是演算法
一副撲克張牌有種陳列方式。
這樣做的好處:
給出的洗牌算演算法應該可以等概率地生成這種結果中的一種
⑵ 撲克牌怎麼洗牌
假洗牌之抽拉循環洗牌
這是一種不錯的利用抽拉洗牌控指整幅牌正體順序不做改變的洗牌方法,和前面的希臘洗牌不一樣的就是這種洗牌法並不會改變特普和波頓的牌。
(1)抽拉洗牌拿牌狀,右手抽出最下面六分之一(就是一小疊牌,為了說明方便,就定1/6吧),把它抽拉放到左手牌的上面,同時左手小拇指製作大布雷克,然後拿起布雷克下方剛才剩下的5/6,同時把剛才被放到頂上的1/6牌自然落到左掌心。
(2)然後抽拉布雷克上放那5/6牌下面的一小疊(大概也1/5左右吧,我想說1/6,我怕說得太多了大家糊塗,這次改五分之一,不過這個1/5是指布雷客上方牌的1/5,接下來我再說,都是指布雷克上方的牌哦),把它放到牌頂,同時,注意!這里用無名指製作一個大布雷克,隔開這1/5和下面的4/5,然後抽出下面的4/5,讓剛才的1/5自然落下到左手最初那1/6牌的上方。
(3)右手再把拿著的4/5牌放回左手進行抽拉,同時,在放回牌的下面左小拇指大布雷克,動作恢復到動作第(1)步的結尾處,然後重復動作(2)(3)直至把牌洗完,你會發現,你一直在循環的把本應該在下面的牌放到他原來的位置,顧名思義,循環抽拉洗牌。
1.右手食指頂住牌背,拇指和其他三個指頭用力夾住牌疊兩頭。
2.左手掌在牌疊的前端伸平,右手拇指捎放鬆使大約半副牌落到左手掌上
3.待所有牌都交錯落下後,雙手將前端左右兩疊未交錯的牌不推合,而按照原來在上的牌仍在上,原來在下的牌仍在下、已交錯洗進的後端牌則在兩手濱的遮護下自動退出,從而上下登牌如原來秩序吻合
4.只要運用自然,觀眾看去牌已洗亂,而實際末洗動一張牌
⑶ 撲克牌洗牌最簡單的一種方法
中國牌王鄭太順推薦一種有趣的方法——「
空中鴿尾」方法
1、把牌分成相等的兩份,雙手各拿一份。雙手手指全部向上,食指放在牌的一端,拇指和其餘三指各放在牌的兩邊,並且拇指與中指相對。然後把兩手牌的另一端相對頂著。
2、兩手把牌抬到與眼相平,徐徐用力,則兩手牌接觸的一端都會向下彎曲。然後把兩手壓力略微減少一些,同時迅速把其中一手的牌往旁邊移動。這樣,兩手的牌相對的一端都會彈起,並且會交錯咬著。
3、把兩手的牌往中間一合,即可完成空中鴿尾式洗牌全過程。
⑷ 洗牌要多少次才能徹底洗開
遠不要以為,洗個兩三次就能把牌洗開了。很多撲克牌小魔術就利用了三次洗牌遠遠不能把牌洗開的秘密。比方說,我拿出一副新牌給你,由你來負責洗牌。洗一次。再洗一次。你覺得還沒洗開對吧,那就再洗一次。然後,請你偷偷看一眼最上面的那張牌,記下它的花色和點數,然後把它插到這摞牌中間某個位置去,再把整副牌給我。我便能挑出這張被動過的牌。洗牌是門技術活 魔術的原理正如上文所說:把一摞排列有序的牌洗三遍,並不會讓整副牌完全無序,排列順序會有一個很強的規律。移動最上面一張牌的位置會破壞掉這個規律,從而露出馬腳來。 為了更方便地做進一步說明,我們下面只用 13 張牌來舉例。由於這是一副新牌,初始時這 13 張牌是有序的:你把牌洗開了嗎 洗一次牌就相當於把上面這個序列分成前後兩半,然後交錯構成一個新的序列:你把牌洗開了嗎 因此,洗完一次牌後,依次尋找 A, 2, 3, ..., J, Q, K 的位置,你會發現它們形成了兩個「上升序列」(分別用兩種顏色標了出來)。 那麼,再洗一次牌會對這個序列造成什麼影響呢?容易看出,第二次洗牌將會把每個上升序列都截成兩半,然後再次相交錯,得到四個上升序列(分別用四種顏色標了出來):你把牌洗開了嗎 如果此時把末尾的那張 7 移到中間去,你會發現這會打破「四個上升序列」的規律。因此,我們很容易辨認出,在下面的撲克牌序列中,7 本該放在後面:你把牌洗開了嗎 但是在上面的例子中,這些上升序列都很短,理論上平均長度僅為 13 / 4 = 3.25。因此如果對方洗牌技術不佳,魔術有出錯的可能。不過,如果把 52 張牌洗三次,將產生 8 個上升序列,平均每個上升序列的長度為 52 / 8 = 6.5,魔術表演的問題就不大了。 五次洗牌也洗不均勻 我們可以藉助「上升序列」的思路來證明,五次洗牌也不能把牌徹底洗均勻,因為有一些排列永遠不能僅用五次洗牌得到。不妨假設初始時撲克牌的順序是 1, 2, 3, …, 51, 52,五次洗牌後最多會產生 25 = 32 個上升序列。但是 52, 51, …, 3, 2, 1 這個排列中有 52 個上升序列,因此五次洗牌是絕對洗不出這樣的排列的。事實上,所有上升序列數量超過 32 的排列都是五次洗牌無法得到的,這就證明了五次洗牌也不能把牌洗均勻。 看來,要想把牌洗開,六次是必需的了。 七次洗牌才足夠 那麼,究竟要洗多少次牌,才能讓所有排列出現的概率大致相同呢?你別說,還真有人做過這樣的研究。 1992 年,佩爾西·戴康尼斯(Persi Diaconis),美國數學家兼專業魔術師,與哥倫比亞大學的戴夫·拜耳(Dave Bayer)一道,為交叉洗牌法建立了一個數學模型,分析了包括上升序列在內的撲克牌排列性質,定義了 m 次洗牌後得到的排列分布與平均分布之間的「總變差距離」,最後發表了一篇 20 頁長的論文。他們計算出,當撲克牌有 52 張,洗牌次數分別為 1, 2, ..., 10 時,總變差距離分別為 1.000, 1.000, 1.000, 1.000, 0.924, 0.614, 0.334, 0.167, 0.085 和 0.043。可見,五次洗牌才能讓整副牌呈現出隨機性,直到第七次洗牌才會讓隨機性顯著增加;並且在此之後,總變差距離將大致以 1/2 的比例依次遞減。因而他們的結論就是:七次洗牌才足夠隨機。 他們還對這個問題進行了漸近意義上的分析:當 n 足夠大時,需要的洗牌次數大約為 3 log2n / 2。
⑸ 什麼是撲克的上而下式洗牌法
逐張洗牌的技法:
在通常情況下,這種技法被稱之為「濫」,主要不但可以控制,還是上而下式控牌法的基礎,因而,這是撲克牌游戲中不可缺少的,是需要練習的。
此技法是在洗牌過程中,用左手拇指從右手中逐張抽出牌,放在左手的特普的一種方法。
要進行這種技法,先要把右手的一組牌拿到左手前面,輕輕將左手拇指貼在左手的特普。
此時右手抓住牌的兩端,以防止牌被多抽出。隨後,以左手拇指逐張抽出,開始洗牌。
所謂「因喬戈」,是在洗牌過程中,將一張(或數張)牌推到(牌的內端)小拇指這邊的技法。這種技法比較簡單。
在上而下式洗牌法中,如果想要進行「因喬戈」,首先右手要靠近牌的內端,再把右手的一組牌放到左手那組上面。
然後左手拇指拉到特普的後面,那張牌順便也推到了內端。上面再放洗過牌。
為了使突出的牌更加隱蔽,這組牌就不必太整齊。
需要注意的是,左手小指尖要貼著突出的牌。在施展「因喬戈」時,洗牌的步驟也不可打亂。
下切牌:這是進行「因喬戈」時,抽出了下半部分牌,放到特普的技法,右手拿「因喬戈」後的一組牌。
右手拇指尖貼在「因喬戈」牌邊緣,接著右手稍微向外推出「因喬戈」下方的一組牌,並用中指與無名指壓住外端。
在推出時候,右手拿著的一組要舉起來,並放到另一組特普,然後用右手整理牌。
以此方式進行「因喬戈」後,牌便會轉移到波頓,下方的牌便會轉移到特普。
下切牌也可在一組牌切牌後取出下半部分時使用。
讓某一個人抽出一張牌,在別人記牌點的這一瞬間,你要進行上而下式洗牌。當洗到一半時,向那人伸出左手,讓他把抽出的牌放到左手牌中,牌放好後,開始洗牌。
洗牌時,先從右手的三張牌逐張洗,放在左手的特普(別人所選的牌)上,這就是「濫」的技巧。
接著將剩餘的牌實施「因喬戈」。
然後,把右手中的牌進行洗牌後,放到「因喬戈」的牌上面。
將「因喬戈」牌的下面一組,進行下切牌,而後放到特普上,這樣,所選的牌也就是從特普位置算起的第四張。後面的處理方法順其自然。
如果需要把選出的牌轉移到特普位置,特普一組要翻過來,並且正面向上,展開3~4張波頓牌給他看,證明這里沒有他所選的牌。然後合上牌,疊整齊。
接著將另一組翻過來並展示,讓那個人看其中也沒有所選的牌。然後把牌翻回去,並放入波頓位置疊齊。這只是證明給其他人看,牌並不在裡面。
要將別人的牌移到特普,雖然可立刻將那人牌上方的牌加以「因喬戈」之後再洗牌,然後把「因喬戈」之後的牌進行切牌,使牌方便轉移到特普位置。
要將牌轉移到波頓,可以按照上述方法轉移到特普後,再進行上而下式洗牌,先把特普的牌向左手洗一張,然後洗剩餘的牌,這樣,就成功轉移到了波頓。
上而下式布雷克的控制。
這種方法與上述方法是相同的。
將「因喬戈」之後的牌下半部分進行下切牌,隨後,在「因喬戈」之後的牌與下半部分牌之間設置布雷克,並保持布雷克。而後進行上而下式洗牌,把布雷克下面的一組牌轉移到特普位置,這就是與方法1的區別所在。
按照方法1,讓某人放好牌後,在上面放三張牌,再將下面一張進行「因喬戈」之後,開始洗牌。
右手稍微用力使牌的上端疊齊,然後以右手拿著左手一組,右手拇指間貼於「因喬戈」之後的牌的內端,右手中指則貼於一組的外端。
一方面將「因喬戈「之後的牌,用拇指向特普的位置推出一些,一方面推入另一組中。
這樣,「因喬戈」後面的牌與下方一組牌之間,也就造成了布雷克。
左手拇指保持好布雷克。再用右手拇指、中指拿起另外的一組,進行上而下式洗牌,待洗到布雷克時,布雷克下面的牌就放到特普位置上。
按照上面的方法進行,那人所選的牌就會轉移到從特普算起的第四張。
此後的操作方法與方法1相同。
這種方法給人一種徹底洗牌的感覺,因而效果會比1的方法強。
自然而輕松的控制。
此方法是「因喬戈」的變形,但比「因喬戈」簡單一些,也更自然一些。
讓某人抽出一張牌後,將一組正面朝下放在左手中。
這時,左手食指要突出來,用右手拿起上半部分,請觀眾將所選的牌,放在左手下面一組牌的特普位置,把右手的一組牌慢慢放到左手下面一組的上面,這樣,上面一組牌就會滑到下面一組的特普位置,靠近波頓的部分就會突出來。
此時用右手拿起左手的一組牌,擺出上而下式洗牌的姿態。這種動作姿態,像是把那人牌上方的牌施予「因喬戈」一樣。
然後,右手拇指進入突出牌的下面,設置布雷克後,進行上而下式洗牌,這樣一來,所選的牌便會轉移到特普。
交叉換牌的控牌技法
在整副牌中,把三張Q抽出來,表面向上拿在左手中。
然後把三張Q背面向上,理順以後,在上面放置正面向上的A。把這7張牌展開,並讓觀眾看清楚三張Q是背面向上的。
此時,把這7張牌放回牌中,小拇指放在最下面一張A牌與其它牌之間,以設置布雷克,從上面疊齊後,悄悄把布雷克下面的6張牌翻過來,方法如下:
左手食指稍微彎曲,並貼在牌的下面,拉出布雷克下面的牌,然後慢慢旋轉,使這6張牌左側轉到右側,以上動作只可以暗中進行,不可被其他人發現。
牌理齊後,右手鬆開。把下面的三張牌背面向上放入一人手中,他便以為是3張Q。然後把剩餘的牌翻過來背面向上,把左手中的波頓的牌抽出來,讓其他人看,然後放入那人手上的牌中。
這樣,那個人手中的牌就都變成了A牌。
⑹ 如何洗撲克牌
如果玩牌的人卻不會洗牌,那是一件多麼丟人的事情。今天,幾分鍾網來教你如何洗撲克牌。
您將需要經常的鍛煉一副撲克牌1、將散亂在桌上的撲克,按同一個方向整理成一疊。
2、然後以左手拿牌為例,左手拿起牌,右手在整疊牌底層抽取適量牌放在最上面,重復抽取即可。
3、如果你認為牌還不夠散,那麼用彈牌的方法,將整疊牌分成兩部分。左右手各拿一疊。
4、將手上的兩疊紙牌都適量的彎曲。
提示:你可以把牌向外彎曲或者向內彎曲都可以。
5、最後慢慢的鬆手,使兩疊牌混合在一起,整理好牌即可。
您知道嗎?撲克牌最初稱作「葉子戲」是由唐代天文學家張遂發明的,因為那時紙牌只有樹葉那麼大。
⑺ 怎樣洗牌能把好牌洗到一塊
這是一種熟悉的洗牌手法.剛憑在這里解釋是不足夠的.要靠你自己多加練習才會將牌切到上面
例如說:撲克牌你想要的牌首先不管你知不知道這張牌是什麼.但你知道牌放到你的牌中.
在洗牌的時候是要靠你純熟的洗牌手法.用手指插在你想要的牌哪裡首先將牌切到最底的一張.
然後在別人的面前.你不斷的洗上邊的牌.哪么你的牌就一直在底牌中.
當你想要將底牌切到最上面的一張時......
你只需要將底牌切到整副牌的中間的時候.你也要用(尾指)按著你想要的牌的上面(意思就是將底牌切到中間時用手指按住你想要的牌).
這時候撲克分為二分之一.....意思就是:你想要的牌在中間.而你尾指從邊上按住牌邊.再在切一次牌的時候.就從尾指按住的下半份的牌抽到最頂.哪你想要的牌就到了最上面.
要詳細說起來.還真的累死人.但表演一次你看.簡單到只用5秒!
⑻ C語言 洗牌演算法
/*洗牌程序:用任何語言,隨機分配52張撲克牌到52個位置上,每個位置只容許放一張牌
用1-13表示紅心A--K
14-26表示黑桃A,2,3-,Q,K
27-39表示方塊A,2,3-,Q,K
40-52表示黑桃A,2,3-,Q,K
也就是生成1-52不重復的隨機數,放到數組中*/
#include<iomanip.h>
#include<stdlib.h>
#include<time.h>
const int N=52;
static int a[N];
int create(int n)
{
return (1+rand()%52);
}
int main()
{
int i,j;
srand(time(0));
for(i=0;i<N;++i)
{
a[i]=create(N);
for(j=0;j<i;++j)
{
if(a[j]==a[i])
{
a[i]=(a[i]+1)%52;
}
}
cout<<setw(5)<<a[i];
}
cout<<endl;
return 0;
}
⑼ 撲克洗牌手法
1)抽拉洗牌拿牌狀,右手抽出最下面六分之一(就是一小疊牌,為了說明方便,就定1/6吧),把它抽拉放到左手牌的上面,同時左手小拇指製作大布雷克,然後拿起布雷克下方剛才剩下的5/6,同時把剛才被放到頂上的1/6牌自然落到左掌心。 (2)然後抽拉布雷克上放那5/6牌下面的一小疊(大概也1/5左右吧,我想說1/6,我怕說得太多了大家糊塗,這次改五分之一,不過這個1/5是指布雷客上方牌的1/5,接下來我再說,都是指布雷克上方的牌哦),把它放到牌頂,同時,注意!這里用無名指製作一個大布雷克,隔開這1/5和下面的4/5,然後抽出下面的4/5,讓剛才的1/5自然落下到左手最初那1/6牌的上方。 (3)右手再把拿著的4/5牌放回左手進行抽拉,同時,在放回牌的下面左小拇指大布雷克,動作恢復到動作第(1)步的結尾處,然後重復動作(2)(3)直至把牌洗完,你會發現,你一直在循環的把本應該在下面的牌放到他原來的位置,顧名思義,循環抽拉洗牌。 1.右手食指頂住牌背,拇指和其他三個指頭用力夾住牌疊兩頭。 2.左手掌在牌疊的前端伸平,右手拇指捎放鬆使大約半副牌落到左手掌上 3.待所有牌都交錯落下後,雙手將前端左右兩疊未交錯的牌不推合,而按照原來在上的牌仍在上,原來在下的牌仍在下、已交錯洗進的後端牌則在兩手濱的遮護下自動退出,從而上下登牌如原來秩序吻合 4.只要運用自然,觀眾看去牌已洗亂,而實際末洗動一張牌