加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:40:52 所属栏目:百科 来源:网络整理
导读:我有5个字段,我希望它们都有0到100之间的生成数字.但是,5个字段的总和应该是100. 当我想为一个字段给出一个随机数时,我会做以下事情: Random rnd = new Random();int x= rnd.Next(1,10); 但是,我应该如何为需要总和为100的多个字段执行此操作? 解决方法 创
我有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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读