相关疑难解决方法(0)

在C#中洗牌

我正在尝试为一个列出一副卡片内容的项目编写一个代码,询问该人想要洗牌的次数,然后将它们洗牌.它必须使用一个方法来使用System.Random类创建两个随机整数.

这些是我的课程:

Program.cs中:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Deck mydeck = new Deck();
            foreach (Card c in mydeck.Cards)
            {
                Console.WriteLine(c);
            }
            Console.WriteLine("How Many Times Do You Want To Shuffle?");

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Deck.cs:

namespace ConsoleApplication1
{
    class Deck
    {    
        Card[] cards = new Card[52];
        string[] numbers = new string[] { "2", "3", "4", "5", "6", "7", "8", "9", "J", "Q", "K" };
        public Deck()
        {
            int i = 0;
            foreach(string s in numbers)
            { …
Run Code Online (Sandbox Code Playgroud)

.net c# shuffle playing-cards

13
推荐指数
3
解决办法
5万
查看次数

奇怪的按位异或行为

为什么以下"交换"操作会在随机时间失败?

int i,p,a[11] = {0,1,2,3,4,5,6,7,8,9,10 };

srand(time(0));

for (i=0;i<11;i++)
{
    p = rand() % 11;
    a[i] = a[i] ^ a[p];
    a[p] = a[i] ^ a[p];
    a[i] = a[i] ^ a[p];
}
Run Code Online (Sandbox Code Playgroud)

它与这个答案中的逻辑没那么不同
它将适用于3/4运行然后开始复制0

用C和C++试过,结果相同

[编辑]
通过初始化p=0和替换相关的行来解决while (p==i) p = rand() % 11;

更新:不使用原因xor(参见Mark Byers的回答和评论)

bit-manipulation

0
推荐指数
2
解决办法
196
查看次数

标签 统计

.net ×1

bit-manipulation ×1

c# ×1

playing-cards ×1

shuffle ×1