我正在为员工分配一个100的随机整数百分比。这个百分比是根据我们有多少员工而且总数必须达到100个。
如果我们有4名员工,如果我们有2名员工,我可能希望产生80-10-5-5之类的分组。百分比越随机越好。
我不确定如何在没有大量不同的if语句的情况下如何优雅地完成这一点,但即便如此,随机性也会受到限制。
答案 0 :(得分:3)
只需为每位员工分配一定范围内的随机数(范围由您决定)。比计算随机数的总和。最后一步:将每个随机数除以总和,得出百分比。
示例:随机数3,9,7 总和= 19 百分比:3/19 = 16%,9/19 = 47%,7/19 = 37% (值是四舍五入的。)
答案 1 :(得分:0)
我为此编写了一个示例代码:
int no_of_employees = 4;
int total_percentage = 100;
List<int> tempNumberList = new List<int>();
List<int> finalNumberList = new List<int>();
Random random = new Random();
for (int i = 0; i < no_of_employees; i++)
{
tempNumberList.Add(random.Next(total_percentage));
}
int sum = tempNumberList.Sum();
foreach(int number in tempNumberList)
{
finalNumberList.Add((number * total_percentage) / sum);
}
if(finalNumberList.Sum() != total_percentage)
{
finalNumberList[0] = finalNumberList[0] + (total_percentage - finalNumberList.Sum());
}
如有必要,请随时改进逻辑。
答案 2 :(得分:0)
这应该有效:
var random = new Random();
var percentages = new List<int>();
int remainder = 100;
for (int i = 0; i < employeesCount; i++)
{
int percentage = random.Next(remainder);
percentages.Add(percentage);
remainder -= percentage;
}
percentages[percentages.Count - 1] += remainder;
请注意