c# – 确定牌组洗牌的程度
我正在做一个小型扑克计划,我想确定一个牌组的洗牌程度.
我有一张带有52张牌的List然后我运行我的洗牌算法,我希望能够确定牌组在某种程度上的洗牌程度. 有人知道怎么做吗? 谢谢 编辑: 我不想马上进行“完美”的洗牌.我已经读完了,我实施了Fisher-Yates.那个人很擅长“完美”的洗牌.我想要做的是模拟一个真实世界的情况,朋友们正在玩德州扑克,经销商拿着套牌并使用混合其他洗牌的浅滩洗牌来洗牌. 一个例子.假设牌组总是新鲜的(对于所有四件套装来说,王牌适合王牌,然后是王牌王牌.)乔拿着甲板,做了2次浅口洗牌,其中一次切入.彼得做了5次剥离洗牌.我想找到一种方法,看看哪一个改组“更好”. 我越是想到它越多,我认为它非常非常难以确定. 再次感谢. 编辑23.10.2013 这是我想出的方法,将Sarans的想法与我的想法结合起来: public int checkShuffle(List<Card> cardDeckToCheck,int[] previousOrder) { // Higher is worse? Sure. int score = 0; for (int i = 0; i < cardDeckToCheck.Count; i++) { Card cardToCheck = cardDeckToCheck[i]; Card cardToLeft = null; Card cardToRight = null; // Should cost more since the card has not moved at all. // For this I need an array that shows me the arangement of the deck before shuffling. if(cardToCheck.index == previousOrder[i]) { score += 3; } if (i == 0) { Console.WriteLine("i == 1"); cardToRight = cardDeckToCheck[i+1]; // if the card we are checking is one lower or one higher than the card to the right if(Math.Abs(cardToCheck.index - cardToRight.index) == 1) { score++; } continue; } else if (i == cardDeckToCheck.Count-1) { Console.WriteLine("i == carddecktocheck.count-1"); cardToLeft = cardDeckToCheck[i - 1]; // if the card we are checking is one lower or one higher than if (Math.Abs(cardToCheck.index - cardToLeft.index) == 1) { score++; } continue; } else { cardToLeft = cardDeckToCheck[i - 1]; cardToRight = cardDeckToCheck[i + 1]; // if the card we are checking is one lower or one higher than if (Math.Abs(cardToCheck.index - cardToLeft.index) == 1) { score++; } if (Math.Abs(cardToCheck.index - cardToRight.index) == 1) { score++; } continue; } } return score; } 我首先记录甲板看起来像是一个int数组然后我洗牌,然后我用洗牌的甲板和甲板的先前顺序运行这个方法. int[] previousOrder = getCurrentOrder(deck.getDeck()); deck.setDeck(riffleShuffle2(3)); textBoxShuffleness.Text = "" + checkShuffle(deck.getDeck(),previousOrder); displayDeck(deck); 当我从一个未洗过的甲板开始并且运行riffle shuffle方法5次时我得到70,33,28,5,10. 这些结果非常符合我的预期. 如果有人发现这种方法有问题,那么如果你发表评论,我将不胜感激:) 解决方法
对此的一个想法是获取列表并用整数值填充它(每卡1个int).制作另一组带有int值的代码并将其转换为卡片值,这样您就可以保留哪些卡属于哪些卡片.随机化整数列表,然后循环遍历列表中的每一行,并标记一组范围内的数量或前一数字中1-2个整数的一个范围.然后,然后为穷人,好人,好人等设置一套百分比表…
这可能不是最好的解决方案,但您将能够了解列表的分布情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |