洗牌演算法
題目要求: 用計算機模擬洗牌(不包括大小王),分發給四個玩家並將四個玩家的牌顯示出來。
思路:i從0~51遍歷,每次產生i到52之間的隨機數k(i<k<52),交換第i 和第k張牌。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int i, j;
Random Rnd = new Random();
int k;
int[] Card = new int[52];
int[,] Player = new int[4, 13];
for (i = 0; i < 4; i++)
{
for (j = 0; j < 13; j++)
{
Card[i * 13 + j] = (i + 1) * 100 + j + 1;
}
}
Console.Write("Please input times:");
string s = Console.ReadLine();
int times = Convert.ToInt32(s);
for (j = 1; j <= times; j++)
{
for (i = 0; i < 52; i++)
{
k = Rnd.Next(51 - i + 1) + i;
int temp = Card[i];
Card[i] = Card[k];
Card[k] = temp;
}
}
k = 0;
for (j = 0; j < 13; j++)
{
for (i = 0; i < 4; i++)
{
Player[i, j] = Card[k++];
}
}
for (i = 0; i < 4; i++)
{
Console.WriteLine("Player{0}:", i + 1);
for (j = 0; j < 13; j++)
{
k = (int)Player[i, j] / 100;
switch (k)
{
case 1:
s = Convert.ToString("紅桃");
break;
case 2:
s = Convert.ToString("方片");
break;
case 3:
s = Convert.ToString("梅花");
break;
case 4:
s = Convert.ToString("黑桃");
break;
}
k = Player[i, j] % 100;
switch (k)
{
case 1:
s = s + "A";
break;
case 11:
s = s + "J";
break;
case 12:
s = s + "Q";
break;
case 13:
s = s + "K";
break;
default:
s = s + Convert.ToString(k);
break;
}
Console.Write(s);
if (j < 12)
Console.Write(", ");
else
Console.WriteLine(" ");
}
}
Console.Read();
}
}
}
注:
101,102,103...113 分別表示紅桃A,紅桃2,...紅桃K
201,202,203...213分別表示方塊A,方塊2,...方塊K
301,302,303...313 分別表示梅花A,梅花2,...梅花K
401,402,403...413分別表示黑桃A,黑桃2,...黑桃K
相關文章
- 演算法題:洗牌演算法演算法
- 【隨機演算法】洗牌隨機演算法
- golang洗牌演算法實現Golang演算法
- 洗牌演算法 Fisher–Yates Shuffle演算法
- 陣列洗牌演算法-shuffle陣列演算法
- 關於洗牌演算法的錯誤認識演算法
- 打造屬於自己的underscore系列(六)- 洗牌演算法演算法
- 實現陣列的隨機排序(含洗牌演算法)陣列隨機排序演算法
- 洗牌演算法及 random 中 shuffle 方法和 sample 方法淺析演算法random
- WTP的大洗牌
- 洗牌演算法擴充(從n個數中隨機m個數)演算法隨機
- 【ECMAScript】睡眠、陣列洗牌陣列
- 房地產行業大洗牌行業
- java實現一個洗牌程式Java
- 洗牌的一個C++類! (轉)C++
- 物流行業加速洗牌 IT應用邁向整合行業
- 視訊行業“洗牌”,正版化當先薦行業
- 未來雲端計算市場將重新洗牌 - erikbern
- 集合框架-模擬鬥地主洗牌和發牌案例框架
- 網際網路保險市場明年將迎洗牌CX
- 跨境電商稅改加速行業洗牌 催生價格戰行業
- 直播行業面臨洗牌 全民TV借新模式破局行業模式
- VR/AR行業重新洗牌:微軟與谷歌誰是最大的贏家?VR行業微軟谷歌
- 500名主播發不出工資 直播平臺進入洗牌階段?
- 中國二次元遊戲行業現狀:是淘金期,亦是洗牌期二次元遊戲行業
- 浩沙健身跑路是否意味著傳統健身行業面臨大洗牌?行業
- 遊戲公司再洗牌:A股兩大龍頭下跌超20%,心動則暴漲52%遊戲
- 海南釋出首個地方監管政策,數藏行業將迎來洗牌期行業
- 集合框架-模擬鬥地主洗牌和發牌並對牌進行排序案例框架排序
- Facebook公開伺服器設計 資料服務行業面臨洗牌伺服器行業
- 2019年AI產業洗牌:偽人工智慧企業將被淘汰出局AI產業人工智慧
- 線上教育app原始碼:市場正面臨大洗牌,現在入局合適嗎?APP原始碼
- iPhone6s自動關機事件:或導致電池供應商洗牌iPhone事件
- 二次元遊戲的2019: 行業完成了一次洗牌二次元遊戲行業
- 瘋狂洗牌!四款"很二"的手遊暢銷TOP10,竟搶下冠亞軍
- 獵頭公司揭露行業最殘酷一面:遊戲人才正在經歷「血腥」洗牌行業遊戲
- 2018VR市場總結:行業重新洗牌,應用場景增加VR行業
- 2023Gartner雲資料庫魔力象限:雲端突圍與市場洗牌資料庫