[cocos2dx]斗地主制作之洗牌算法

简介:

做斗地主项目,洗牌算法是一个很重的一步,怎样“洗”的均匀,“洗”的随机,这是非常考究的,算法的优劣就直接会影响效果的好坏。这里我给出一个算法,将0-53这54个数字直接排序,经测试还挺随机的。这里要感谢@灰太龙的指导!这个算法是服务器端用于返回给客户端牌的算法,主要的思想就是不断的换牌,两牌交换位置,如果循环次数增大的话,随机性也会更强,洗牌的效果更好!

Code:

C#:

using System; using System.Collections.Generic; using System.Linq; using System.Text;  namespace 随机排序 {     class Program     {         static void Main(string[] args)         {             int [] data = new int [54];             for (int i = 0; i < 54; i++)             {                 data[i] = i;             }             Console.WriteLine("排序前:");             foreach (int i in data)             {                 Console.Write(i + ",");             }             long tick = DateTime.Now.Ticks;             Random random = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));              //牌交换算法             for (int i = 0; i < 54; i++)             {                 int t1 = random.Next(0, 54);                 int t2 = random.Next(0, 54);                 int temp = data[t1];                 int data1 = data[t1];                 int data2 = data[t2];                 data[t1] = data2;                 data[t2] = temp;             }             Console.WriteLine("排序后:");             foreach (int i in data)             {                 Console.Write(i + ",");             }         }     } } 
运行 截图:




C++:

void HelloWorld::xipai() {     for (int i=0; i<54; i++) {         data[i] = i;     }     //随机数     //洗牌     for(int i=0;i<54;i++)     {         int t1 = arc4random()%54;         int t2 = arc4random()%54;         int temp = data[t1];         int data1 = data[t1];         int data2 = data[t2];         data[t1] = data2;         data[t2] = temp;     }     printf("洗牌之后:\n");     for (int i =0; i<54; i++) {         printf("%d  ",data[i]);     } }

结果:


会发现还是挺随机的,如果将for循环取大一点就更随机了!
















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366165,如需转载请自行联系原作者

相关文章
|
2月前
|
存储 算法 测试技术
ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角
ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角
31 1
|
人工智能 算法 PyTorch
AI 全自动玩斗地主,靠谱吗?Douzero算法教程
你觉得,AI 全自动玩斗地主,胜率能有多高? 真就有100%胜率,实现欢乐豆自由? 我让这个 AI 自己玩了一小时,结果出乎意料。
2731 0
AI 全自动玩斗地主,靠谱吗?Douzero算法教程
|
9天前
|
机器学习/深度学习 人工智能 算法
技术经验解读:【转】完美洗牌算法学习
技术经验解读:【转】完美洗牌算法学习
|
2月前
|
存储 算法 容器
ArrayList | 简单的洗牌算法
这是一个关于创建和洗牌扑克牌程序的摘要: 程序包括以下步骤: 1. 创建一副扑克牌(52张,不包括大小王)。 2. 洗牌,随机打乱扑克牌的顺序。 3. 揭牌,模拟玩家轮流从牌堆中抽取指定数量的牌。
28 4
|
2月前
|
存储 算法 PHP
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
21 1
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
|
11月前
|
算法 C# 图形学
彻底搞懂洗牌算法
彻底搞懂洗牌算法
130 0
|
11月前
|
算法 图形学
面试高频题之三-洗牌算法
面试高频题之三-洗牌算法
|
算法 JavaScript Java
Math.random()传参?什么是随机种子?什么是洗牌算法?
Math.random()传参?什么是随机种子?什么是洗牌算法?
156 1
|
12月前
|
算法 Go 索引
870. 优势洗牌:田忌赛马:贪心算法+双指针
这是 力扣上的 870. 优势洗牌,难度为 中等。

热门文章

最新文章