gpt4 book ai didi

c# - 计算可能性的数学函数

转载 作者:行者123 更新时间:2023-11-30 12:24:22 26 4
gpt4 key购买 nike

我正在研究一种数学函数,我必须检查两个列表中哪一个更大并且不能再被超越。

我已经为此工作了很长一段时间,但我无法真正做到正确,而且代码对我来说变得越来越复杂。我在想有某种公式可以让我的生活更轻松,但我找不到它,我担心数学不是我的强项。

这是我正在尝试做的事情:

我有两个列表,每隔一步向其中添加 0 或 1 的值。所以第 1 步向 List1 添加一个 0 或 1,第 2 步向 List 2 添加一个 0 或 1。

在 6 个步骤之后,该函数必须停止并检查列表 1 中是否比列表 2 中有更多的元素,反之亦然。也可能相等。

但是,例如,当您在第 4 步时,列表 1 内部有两个 1,列表 2 内部有两个零,则该函数应该停止并显示 List1,因为列表 2 永远无法超过或等于列表 1。

另一个例子:如果您在第 5 步,List1 有 1 个 1 和 2 个 0,List2 有 2 个 1,那么该函数应该停止,因为它不再重要,因为 List2 的 1 比 List1 多。

但我似乎无法解决这个难题。有没有人能解决这个问题?

private void button1_Click(object sender, EventArgs e)
{
resetLists();
}

private void button2_Click(object sender, EventArgs e)
{
nextStep();
}

public Random rnd = new Random();
public List<int> List1 = new List<int>();
public List<int> List2 = new List<int>();
public int step = 0;

private void resetLists()
{
List1.Clear();
List2.Clear();
step = 0;
Console.WriteLine("----------------------------");
}

private void nextStep()
{
step++;

if (step <= 6)
{
if (step % 2 != 0)
{
int result = rnd.Next(0, 2);
List1.Add(result);
Console.WriteLine("List 1: " + result.ToString());
}
else
{
int result = rnd.Next(0, 2);
List2.Add(result);
Console.WriteLine("List 2: " + result.ToString());
}

if (step > 3)
{
checkLists();
}
}
}

private void checkLists()
{
int actualResultList1 = 0;
int actualResultList2 = 0;
int virtualResultList1 = 0;
int virtualResultList2 = 0;

// GET THE ONES FROM LIST 1
for (int l1 = 0; l1 < List1.Count; l1++)
{
if (List1[l1] == 1)
{
actualResultList1++;
}
}

// GET THE ONES FROM LIST 2
for (int l2 = 0; l2 < List2.Count; l2++)
{
if (List2[l2] == 1)
{
actualResultList2++;
}
}

// CALCULUATE THE VIRTUAL ONES
virtualResultList1 = 3 - List1.Count;
virtualResultList2 = 3 - List2.Count;

if (step < 6)
{
if ((actualResultList1 + virtualResultList1) >= (actualResultList2 + virtualResultList2) + (6-step))
{
MessageBox.Show("List1");
}

if ((actualResultList2 + virtualResultList2) >= (actualResultList1 + virtualResultList1) + (6-step))
{
MessageBox.Show("List2");
}
}
else
{
if (actualResultList1 > actualResultList2)
{
MessageBox.Show("List1");
}
else if (actualResultList2 > actualResultList1)
{
MessageBox.Show("List2");
}
else if (actualResultList1 == actualResultList2)
{
MessageBox.Show("equal");
}
}
}

最佳答案

感谢Rob的大力帮助,我得以解决。

最终解决方案:

private void checkLists()
{
int actualResultList1 = 0;
int actualResultList2 = 0;

// GET THE ONES FROM LIST 1
for (int l1 = 0; l1 < List1.Count; l1++)
{
if (List1[l1] == 1)
{
actualResultList1++;
}
}

// GET THE ONES FROM LIST 2
for (int l2 = 0; l2 < List2.Count; l2++)
{
if (List2[l2] == 1)
{
actualResultList2++;
}
}

if ((List1.Count + List2.Count) < 6)
{
if (actualResultList1 > (actualResultList2 + ((6/2) - List2.Count)))
{
MessageBox.Show("List1");
}

if (actualResultList2 > (actualResultList1 + ((6/2) - List1.Count)))
{
MessageBox.Show("List2");
}
}
else
{
if (actualResultList1 > actualResultList2)
{
MessageBox.Show("List1");
}
else if (actualResultList2 > actualResultList1)
{
MessageBox.Show("List2");
}
else if (actualResultList1 == actualResultList2)
{
MessageBox.Show("equal");
}
}
}

因此,如果将来有人也在寻找这个,就在这里。

关于c# - 计算可能性的数学函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34281222/

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