让我开始对我可怕的语法和拼写说抱歉。

我有一个mvc3项目,创建一个甲板并为它添加52张卡。 然后我添加了一个Shuffle函数,只有在 i步骤中才能通过循环中的循环。

在我的类甲板上,我创建一个包含52个播放对象的数组。 Deck具有将数组复制到我视图中显示的列表中的方法, 它还有一种将列表洗牌的方法。

不容易解释,但代码只运行一个时间,除非我步遍历它。

我在我的甲板模型中的Shuffle方法。

 public void Shuffle()
 {
    for (int i = 0; i < 51; i++)
    {
        PlayingCard temp;
        temp = myDeck[i];
        Random rnd = new Random();
        int randomNr = rnd.Next(51);
        myDeck[i] = myDeck[randomNr];
        myDeck[randomNr] = temp;
    }   
}
.

shuffle后的输出,返回步骤:

* 4钻石 1颗心 2颗心 3颗心 4颗心 5颗心 6颗心 7颗心 8颗心 9颗心 10颗心 11颗心 12颗心 13颗心 1黑桃 2黑桃 3黑桃 4个黑桃 5个黑桃 6黑桃 7个黑桃 8个黑桃 9黑桃 10个黑桃 11个黑桃 12个黑桃 13锹 1个俱乐部 2俱乐部 3俱乐部 4俱乐部 5俱乐部 6俱乐部 7俱乐部 8俱乐部 9俱乐部 10俱乐部 11俱乐部 12俱乐部 13俱乐部 1颗钻石 2颗钻石 12钻石 3颗钻石 5颗钻石 6颗钻石 7颗钻石 8颗钻石 9钻石 10颗钻石 11颗钻石 13颗钻石 *

输出步骤后15次:

2黑桃 3俱乐部 5个黑桃 3颗钻石 12颗钻石 13颗心 11颗心 1黑桃 6俱乐部 5颗钻石 1个俱乐部 12颗心 7俱乐部 13锹 2俱乐部 10颗心 3黑桃 4个黑桃 3颗心 6黑桃 7个黑桃 8个黑桃 9黑桃 10个黑桃 11个黑桃 12个黑桃 8颗心 7颗心 1颗心 2颗心 4俱乐部 5俱乐部 9颗心 6颗心 8俱乐部 9俱乐部 10俱乐部 11俱乐部 12俱乐部 13俱乐部 1颗钻石 2颗钻石 4颗心 4颗钻石 5颗心 6颗钻石 7颗钻石 8颗钻石 9钻石 10颗钻石 11颗钻石 13钻石

踩过整个循环后的输出:

10颗心 6俱乐部 8颗心 5颗心 5俱乐部 7颗钻石 5个黑桃 11颗钻石 12个黑桃 12俱乐部 8颗钻石 5颗钻石 1个俱乐部 9黑桃 10颗钻石 12颗心 8个黑桃 9俱乐部 13俱乐部 6颗心 1黑桃 11个黑桃 1颗心 12颗钻石 4俱乐部 3俱乐部 8俱乐部 9钻石 7俱乐部 2俱乐部 3颗钻石 1颗钻石 7个黑桃 10个黑桃 2颗心 6黑桃 13锹 4个黑桃 2黑桃 6颗钻石 4颗心 2颗钻石 4颗钻石 11俱乐部 7颗心 11颗心 3黑桃 3颗心 10俱乐部 13颗心 9颗心 13钻石

如图所示,循环仅在步骤浏览它时运行。 我尝试了不同的循环,制作了一个新项目,将随机播放功能移动到控制器,没有任何帮助。

任何人都有任何想法我应该如何解决这个问题?

有帮助吗?

解决方案

我已经创建了一个围绕这个的一个示例应用程序,移动生成的世代odicetagcode到循环外,给了我我期望的行为。

在我看来,它只似乎将一张卡洗牌,是因为随机生成的值对整个循环的值相同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top