gpt4 book ai didi

java - 有些测试用例没有运行,但有些是概率测试

转载 作者:行者123 更新时间:2023-11-30 05:23:09 26 4
gpt4 key购买 nike

我有一个程序,它会掷五个骰子并分配一只手来掷骰子。即什么都没有、一对、两对、三样、葫芦、四样、五样。该代码运行 1000000 次,并给出每次掷骰子的百分比机会。下面我附上了我的代码应该输出的一般百分比:

Case 1, None alike, is 0.092533
Case 2, One pair, is 0.462799
Case 3, Two pair, is 0.231789
Case 4, Three of a kind, is 0.154192
Case 5, Full house, is 0.038595
Case 6, Four of a kind, is 0.019316
Case 7, Five of a kind, is 0.000776

但是我的代码给出以下输出:

Case 1, None alike is 0.093099
Case 2, One pair is 0.384768
Case 3, Two pair is 0.076921
Case 4, Three of a kind is 0.15485
Case 5, Full House is 0.270349
Case 6, Four of a kind is 0.019281
Case 7, Five of a kind is7.33E-4

我不明白为什么我的节目中一对、两对和满堂彩的百分比有所下降。我已经仔细检查并测试了我的逻辑,但从我所看到的来看,这是合理的。最初,我的一对是正确的,但我的两对是 0.0。下面是我原来的逻辑,它导致两对都是 0 并且我的对是正确的。

但是,我将其更改为当前逻辑以获得当前输出。我希望有另一双眼睛来看看,并让我知道他们是否能捕捉到一些东西。下面是我的代码:

最佳答案

更改 1:

if (hand < 6) {
int counter3 = 0;
int counter2 = 0;
for (int j = 0; j < length; j++) {
if (counts[j] == 3) {
counter3++;
}
if (counts [j] == 2) {
counter2++;
}
}
if (counter3 == 1 && counter2 == 1) {
hand = 5;
}
}

更改 2:

if (hand < 4) {
int newcounter = 0;
for (int j = 0; j < length; j++) {
if (counts[j] == 2) {
newcounter++;
}
}
if (newcounter==2) {
hand = 3;
}
if (newcounter == 1) { hand = 2; }
}

更改 3:

请删除if( hand < 3)部分代码。

更新了我的答案。在您的代码中 counter变量(当您尝试检查“满堂彩”时)由于两对(例如:counts = 020200)而变为 2,而不是由于满堂彩(例如:counts = 300200)。因此,它没有计算下面代码中应该计算的两对,因为 hand已经变成 5,所以它没有进入任何其他 if下面的部分虽然它应该进入内部 if(hand<3) 。希望它能解决这个问题。

关于java - 有些测试用例没有运行,但有些是概率测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59168831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com