c# – 为多个字段生成数字

我有5个字段,我希望它们都有0到100之间的生成数字.但是,5个字段的总和应该是100.

当我想为一个字段给出一个随机数时,我会做以下事情:

Random rnd = new Random();
int x= rnd.Next(1, 10);

但是,我应该如何为需要总和为100的多个字段执行此操作?

最佳答案
创建您的第一个随机数.之后,您将num1和100的值之间的差值作为rnd的最大def.但是为了保证它们的总和为100,你必须检查最后一个数字,如果所有数字的总和是100.如果不是,你的最后一个数字的值是它们的总和与100的差值.

简单地说你的代码并得到一个干净的strcuture,把代码放在一个循环中,而不是单个数字使用int [5]数组.

private int[] CreateRandomNumbersWithSum()
{
    int[] nums = new int[5];
    int difference = 100;
    Random rnd = new Random();

    for (int i = 0; i < nums.Length; i++)
    {
        nums[i] = rnd.Next(0, difference);

        difference -= nums[i];
    }

    int sum = 0;

    foreach (var num in nums)
        sum += num;

    if (sum != 100)
    {
        nums[4] = 100 - sum;
    }

    return nums;
}

转载注明原文:c# – 为多个字段生成数字 - 代码日志