WOO logo

請問巫師 #283

什麼是 Fisher-Yates 洗牌?

anonymous

Fisher-Yates 洗牌是一種程式設計技巧,用於快速且無偏差地對陣列進行洗牌。假設數組中有 n 個元素。將計數器設為 n。

  1. 從卡號1到n-1中隨機選取一張卡。
  2. 將該卡與卡號 n 交換。
  3. 從 n 減去 1。
  4. 重複步驟1至3,直到n=2。

這是它在 C++ 中的樣子。請注意,為了簡單起見,這裡忽略了模偏差。

void fisher_yates(int deck[], int NumCards)
{
	int i,保持;
	無符號整數 rn;
	對於(i = NumCards-1;i> 0;i--)
	{
		rn=genrand_int32()%(i+1);
		保持=甲板[rn];
		甲板[rn]=甲板[i];
		甲板[i]=保持;
	}
}


我在Wizard of Vegas論壇上討論過這個問題。

在加州的埃爾西諾湖酒店及賭場,有一個名為「Red Flex」的二十一點附加賭注。此賭注根據莊家手中連續的紅牌數量(從第一張牌開始)進行賠償。賠付表如下:

  • 七個或更多紅色的賠率為 200 比 1
  • 六個紅色的賠率為 100 比 1
  • 五張紅牌賠率為 50 比 1
  • 四個紅色的賠率為 10 比 1
  • 三張紅牌賠率為 5 比 1
  • 兩張紅牌賠率為 1 比 1

如果莊家爆牌,或因為所有玩家爆牌而不需要抽牌,莊家仍將根據需要抽牌來裁定邊注。

幾率有多大?

anonymous

我在我的二十一點附錄 8中展示了對 Red Flex 的分析。

我在Wizard of Vegas論壇上討論過這個問題。

如果賭場不允許加倍或分牌,這會對二十一點的賭場優勢產生什麼影響?

Luke

不允許加倍會使賭場優勢增加 1.48%。不允許分牌會使賭場優勢增加 0.57%。兩者都不允許會使賭場優勢增加 1.91%。

在您上一篇專欄文章中,Eliot Jacobson 提問瞭如果玩家知道第一張牌是 A 或 J 的話,牌九撲克的預期價值是多少。我猜這與玩家看到這張牌能夠下注有關。您知道 Eliot 提問的原因嗎?

odiousgambit

冒著再次激怒優勢玩家社群的風險,我只想說,在某些情況下,精明的玩家可以在知道自己的第一張牌是什麼的情況下下注。

下表顯示了每張牌的機率,以及當它是第一張牌時的優勢(如果大於零)。條件回報是指在給定第一張牌的情況下的預期收益。預期回報是機率列和條件回報列的乘積。

牌九撲克 — 第一張牌 Q 或更好

卡片可能性條件
返回
預期的
返回
小丑0.018868 0.257773 0.004864
高手0.075472 0.136483 0.010301
國王0.075472 0.038914 0.002937
女王0.075472 0.000534 0.000040
所有其他0.754717 0.000000 0.000000
全部的1.000000 0.018141

上表顯示,如果玩家只在第一張牌是Q或更高時出牌,那麼他每手牌的優勢為1.81%。玩家下注的機率為24.52%。每手牌的優勢為7.40%。

注意,Q的優勢只有0.05%。如果我們不玩這手牌,那麼牌桌就會變成這樣。

牌九撲克 — 首張牌王或更好

卡片可能性條件
返回
預期的
返回
小丑0.018868 0.257773 0.004864
高手0.075472 0.136483 0.010301
國王0.075472 0.038914 0.002937
所有其他0.830189 0.000000 0.000000
全部的1.000000 0.018101

上表顯示,如果玩家只在第一張牌是K或更高時出牌,那麼他每手牌的優勢仍然為1.81%。玩家下注的機率為16.98%。每手牌的優勢為10.66%。

如果玩家只玩 A 或小丑,則表格如下。

牌九撲克 — 第一張牌 A 或 Joker

卡片可能性條件
返回
預期的
返回
小丑0.018868 0.257773 0.004864
高手0.075472 0.136483 0.010301
所有其他0.905660 0.000000 0.000000
全部的1.000000 0.015164

這表明,如果玩家只在第一張牌是A或Joke時出牌,那麼他每手牌的優勢仍然有1.52%。玩家下注的機率為9.43%。因此,每手牌的優勢為16.07%。

請參閱我在Wizard of Vegas論壇上關於此問題的討論。

一架飛機在正上方5公里處。你從地面向它發射一枚熱尋的飛彈。導彈始終朝著飛機直飛。飛機的速度是每分鐘10公里,沿著直線飛行,並保持相同的高度。導彈的速度是每分鐘11公里。導彈需要多長時間才能擊中飛機?

anonymous

要查看您可能覺得有用的積分,請選擇下面的黑色區域。

(1+x^2)^0.5 的積分 dx = ln(x + (1+x^2)^0.5) + 積分常數。

要查看答案,請選擇下面的黑色區域。

55/21 分 = 2.6195 分 = 157.1429 秒。