大家好,我尝试根据用户总摘要生成 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;
}
我已经尝试过,但我的数组内的值有负值我只想得到
正值
请帮助我,如何解决这个问题,谢谢您的帮助。
我曾经在 codereview.stackexchange.com 上问过类似的问题。我已经修改了我的答案,为您生成一个五位数的序列。
此外,该代码的速度足够快,可以在单个请求中创建数万个代码。如果您查看最初的问题和答案(链接到下面),您会发现它会在插入代码之前检查代码是否已被使用。因此,代码是唯一的。
void Main()
{
Console.WriteLine(GenerateCode(CodeLength));
}
private const int CodeLength = 10;
// since Random does not make any guarantees of thread-safety, use different Random instances per thread
private static readonly ThreadLocal<Random> _random = new ThreadLocal<Random>(() => new Random());
// Define other methods and classes here
private static string GenerateCode(int numberOfCharsToGenerate)
{
char[] chars = "0123456789".ToCharArray();
var sb = new StringBuilder();
for (int i = 0; i < numberOfCharsToGenerate; i++)
{
int num = _random.Value.Next(0, chars.Length);
sb.Append(chars[num]);
}
return sb.ToString();
}
原问题及答案:https://codereview.stackexchange.com/questions/142049/creating-a-random-code-and- saving-if-it-does-not-exist/142056#142056 https://codereview.stackexchange.com/questions/142049/creating-a-random-code-and-saving-if-it-does-not-exist/142056#142056
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)