[英]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.