【发布时间】:2018-11-25 08:01:40
【问题描述】:
嗨,伙计,我尝试根据用户总摘要生成 50 个 5 位数字。例如,用户给 500000,然后我需要随机数 5 位数乘 50 数等于 500000
我试试这个,但它不是 5 位数字
int balane = 500000;
int nums = 50;
int max = balane / nums;
Random rand = new Random();
int newNum = 0;
int[] ar = new int[nums];
for (int i = 0; i < nums - 1; i++)
{
newNum = rand.Next(0, max);
ar[i] = newNum;
balane -= newNum;
max = balane / (nums - i - 1);
ar[nums - 1] = balane;
}
int check = 0;
foreach (int x in ar)
{
check += x;
}
我已经尝试过了,但是我的数组中的值有负值,我只想得到 正值
请帮助我,如何解决这个问题并感谢您的提前。
【问题讨论】:
-
如果您只需要 50 个随机的 5 位数字,请像这样使用 Random.Next():
newNum = rand.Next(10000, 100000);,它将为您提供 10,000 到 99,999 之间的任何数字。 -
五位数字是 0 到 99999 之间的任何数字。这意味着,
Random.Next(100000)。顺便说一下,00010和12345一样随机。 -
如果要生成5位数字,请拨打
Random.Next(10)5次。直接取数字就不用再尝试把数字转回数字了 -
@PanagiotisKanavos 数字 00010 不是“正确的” 5 位数字,它是用零填充的数字 10。 10,000 是最小的 5 位数字,而 99,999 是最大的。