gpt4 book ai didi

c# - 如何平均分配阵列成员

转载 作者:数据小太阳 更新时间:2023-10-29 03:41:37 26 4
gpt4 key购买 nike

我有一个Boxes数组和一个Cats数组。我需要把猫均匀地分到盒子里。
我现在的代码是:

Cat[] Cats = GetCats();
Box[] Boxes = GetBoxes();

int baseCatsPerBox = Cats.Length / Boxes.Length
int boxesWithOneExtraCat = Cats.Length % Boxes.Length

int boxIndex = 0;
foreach(Cat c in Cats)
{
Boxes[boxIndex].Cats.Add(c);
int catsInThisBox = baseCatsPerBox;
if (boxIndex < boxesWithOneExtraCat)
catsInThisBox++;
if (Boxes[boxIndex].Cats.Count == catsInThisBox)
boxIndex++;
}

这段代码主要起作用。如果我插入 7盒子和 10猫,我会得到:
2-2-2-1-1-1-1

我想要一种更均匀的分配方式(其中有额外猫的盒子被均匀地分配),比如:
2-1-1-2-1-1-2

将一组猫分布到一组盒子中最优雅(最少的代码行)的方法是什么?

最佳答案

请尝试以下代码:

int cats = 10;
int boxes = 7;
int[] result = new int[boxes];

double catsPerBox = (double)cats / boxes;
int index = 0;
double currentCats = 0;
int oldCats = 0;
while (index < boxes)
{
currentCats += catsPerBox;
int intCats = (int)Math.Round(currentCats - oldCats);
oldCats += intCats;
result[index++] = intCats;
}

它为 cats = 10数组中的 boxes = 7result生成以下“均匀”分布:
1-2-1-2-1-2-1

关于c# - 如何平均分配阵列成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691949/

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