[英]Unique 4 digit random number in C#
我想生成一个唯一的 4 位随机数。 这是我尝试过的以下代码:
生成随机数的代码
//Generate RandomNo
public int GenerateRandomNo()
{
int _min = 0000;
int _max = 9999;
Random _rdm = new Random();
return _rdm.Next(_min, _max);
}
问题是我收到了一个值为241
的随机编号,它不是 4 位数字。 代码有问题吗?
//Generate RandomNo
public int GenerateRandomNo()
{
int _min = 1000;
int _max = 9999;
Random _rdm = new Random();
return _rdm.Next(_min, _max);
}
您需要一个 4 位数的代码,以 1000 开头
请改用此代码:
private Random _random = new Random();
public string GenerateRandomNo()
{
return _random.Next(0, 9999).ToString("D4");
}
241 是一个四位数,如果您使用前导零:0241。
用这样的格式字符串显示返回的数字:
String.Format("{0:0000}", n);
仅一行代码
int num = new Random().Next(1000, 9999);
0 与 0000 相同。
241 与 0241 相同。
您可以将整数格式化为带有前导零的字符串。
使用:int _min = 1000;
或者如果你想要 0241,请使用前导 0
Random generator = new Random();
string number = generator.Next(1, 10000).ToString("D4");
int NoDigits = 4;
Random rnd = new Random();
textBox2.Text = rnd.Next((int)Math.Pow(10, (NoDigits - 1)), (int)Math.Pow(10, NoDigits) -1).ToString();
我建议创建新列表并检查此列表是否包含任何数字
var IdList = new List<int>();
do
{
billId = random.Next(1, 9000);
} while (IdList.Contains(billId));
IdList.Add(billId);
扩展 brij 的答案,但使用 0000 到 9999 而不是 1000 到 9999
string formatting = "0000"; //Will pad out to four digits if under 1000
int _min = 0;
int _max = 9999;
Random randomNumber = new Random();
var randomNumberString = randomNumber.Next(_min, _max).ToString(formatting);
或者如果你想最小化线条:
Random randomNumber = new Random();
var randomNumberString = randomNumber.Next(0, 9999).ToString("0000");
使用它,您将避免以 00[...] 开头的数字,您还可以指定长度。
string RandomNumbers(int Length)
{
Random Rand = new Random();
StringBuilder SB = new StringBuilder();
for (int i = 0; i < Length; i++)
SB.Append(Rand.Next(0, 9));
return SB.ToString();
}
RandomNumbers(4) // OUTPUT: 9301, 4936, 0692, etc ...
这是生成任何数字的方法。 如果它包含重复的数字,则内部循环将重新生成该数字,因此随机数将仅由唯一数字组成。
using System.Linq;
public static int GenerateRandomNum()
{
// Number of digits for random number to generate
int randomDigits = 4;
int _max = (int)Math.Pow(10, randomDigits);
Random _rdm = new Random();
int _out = _rdm.Next(0, _max);
while (randomDigits != _out.ToString().ToArray().Distinct().Count())
{
_out = _rdm.Next(0, _max);
}
return _out;
}
你可以考虑这样的事情。
int length = 4;
int number = 50;
string asString = number.ToString("D" + length);
上面的代码给出了结果 0050。
同样,您可以尝试转换为字符串并进行验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.