洗牌算法

来源:互联网 发布:java httputils 编辑:程序博客网 时间:2024/06/09 12:36

用1到54代表54张牌,实现洗牌算法。

我的思路是使用一个顺序保存了这54个整数的list来代表原始牌堆,新建一个长度为54的数组array来保存打乱后的牌。

第一次取1-54中的一个随机数r1,然后将list中下标为r1的那项的值保存在array[0]中,再将list中下标为r1的那项remove。

第二次取1-53中的一个随机数r2,然后将list中下标为r2的那项的值保存在array[1]中,再将list中下标为r2的那项remove。

直到list为空。

用c写了个很短的程序弱弱的想是不是太短,然后发现如果用c#洗牌只需一句linq。。

static int n = 54;System.Random rm = new System.Random();list = (from i in list orderby rm.Next(1,n) descending select i).ToList();


原文作者:MaggieDorami
版权声明:文章原创,欢迎转载,转载时请务必加上原文超链接、作者信息和本声明。

原创粉丝点击