代码不多,先看效果:

类代码:

 1 static class  ShuffleCards
2 {
3 private static int lastHash = 0;
4 public static void Work(byte[] cards)
5 {
6 if (lastHash == 0)
7 lastHash = System.Environment.TickCount;
8 int len = cards.Length - 2;
9 int mod = 0;
10 byte temp = 0;
11 for (int i = cards.Length - 1; i >= 0 && len>0; i--)
12 {
13 lastHash = (lastHash << 5) - lastHash + i;
14 mod = lastHash < 0 ? lastHash % len * (-1) : lastHash % len;
15 temp = cards[mod];
16 cards[mod] = cards[i];
17 cards[i] = temp;
18 len--;
19 }
20 }
21 }

测试代码:

 1 //16张牌0~F
2 byte[] cards = new byte[16];
3 //洗上99次
4 for (int j = 0; j < 100; j++)
5 {
6 //每次都初始化顺序为 0~F
7 for (int i = 0; i < cards.Length; i++)
8 cards[i] = (byte)i;
9 //洗牌调用
10 ShuffleCards.Work(cards);
11 StringBuilder ret = new StringBuilder();
12 //输出
13 for (int i = 0; i < cards.Length; i++)
14 ret.Append(cards[i].ToString("X") + " ");
15 Console.WriteLine(j.ToString()+" > "+ ret.ToString());
16 }
17 Console.ReadLine();

最新文章

  1. SDOI 2016 征途 决策单调性
  2. h5里viewport设置
  3. VB兼容问题
  4. STORM_0008_Structure-of-the-codebase_Storm的代码库的结构
  5. 如何编写一个编译c#控制台应用程序的批处理程序
  6. 计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码
  7. XML和HTML常用转义字符
  8. java进阶一之jdk8新特性
  9. 重读LPTHW-Lesson15-17
  10. Masonry使用详解
  11. lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
  12. [bzoj3998][TJOI2015]弦论-后缀自动机
  13. RTMPdump(libRTMP) 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1)
  14. 打包加载 AssetBundle
  15. js之返回网页顶部
  16. MSSqlServer 发布/订阅配置(主从同步)
  17. C# Winform 怎么让按钮在Panel里居中显示
  18. githup创建新java项目
  19. Windows下配置Nginx+php7
  20. 将Log4J的日志内容发送到agent的source

热门文章

  1. vulnhub靶场之VENOM: 1
  2. 开源分布式支持超大规模数据分析型数据仓库Apache Kylin实践-上
  3. 解决centos7 yum和wget都不能使用
  4. LoginServlet类
  5. window.alert和console.log()
  6. 五大数据类型 - 字符串 - 列表 list - 集合set - 有序集合 - 哈希 hashMap
  7. 合肥光源纵向震荡数据源相关PV
  8. VueJs 监听 window.resize 方法---窗口变化
  9. vue .sync的理解
  10. ATC:一个能将主流开源框架模型转换为昇腾模型的神奇工具