| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 820 人关注过本帖
标题:C#入门经典里面的洗牌
只看楼主 加入收藏
over1230
Rank: 8Rank: 8
等 级:贵宾
威 望:25
帖 子:113
专家分:897
注 册:2009-10-9
收藏
 问题点数:0 回复次数:2 
C#入门经典里面的洗牌
入门经典里面的洗牌代码:
for(int i=0;i<52;i++)
{
  int destCard=0;
  bool foundCard=false;
  while(foundCard==false)
  {
      destCard=sourceGen.Next(52);
      if(assigned[destCard]==false)
      {
          foundCard=true;
       }
   }
   assigned[destCard]=true;
   newDeck[destCard]=cards[i];
}
newDeck.CopyTo(cards,0);


而我喜欢这样洗牌:

for (int i = 0; i < 52; i++)
{
    temp = tempcard[i];
     int k = ran.Next(52);
      tempcard[i] = tempcard[k];
       tempcard[k] = temp;
 }

书上面 的洗牌方法,最好情况下是循环52次,而最坏情况下会运行:1+2+3+...+52次,
而我这种洗牌方法,只需要52次。
请教下,书上这样做的好处在那?我这种方法,有什么不好的地方呢?


[ 本帖最后由 over1230 于 2014-12-22 16:47 编辑 ]
搜索更多相关主题的帖子: 经典 false assigned 
2014-12-22 16:46
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
收藏
得分:0 
你写得比书上好,每次洗2张牌,书上每次洗一张牌

站在春哥的肩膀上
2014-12-22 20:17
over1230
Rank: 8Rank: 8
等 级:贵宾
威 望:25
帖 子:113
专家分:897
注 册:2009-10-9
收藏
得分:0 
哦,那就好。
这也是很早之前听别人讲的一种思路,觉得很好,所以就习惯这种方式洗牌。
2014-12-23 08:34
快速回复:C#入门经典里面的洗牌
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014693 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved