2015-11-17 140 views
11

我想生成一個唯一的4位隨機數。這是下面的代碼是我曾嘗試c中的唯一4位隨機數#

代碼生成隨機沒有

//Generate RandomNo 
    public int GenerateRandomNo() 
    { 
     int _min = 0000; 
     int _max = 9999; 
     Random _rdm = new Random(); 
     return _rdm.Next(_min, _max); 
    } 

問題是,我已接受了價值241隨機沒有這不是一個4個數字number.Is有什麼代碼問題。

任何幫助將不勝感激。

+1

警告。如果你連續多次調用你的函數,你可能會得到相同的值。最好重用你的Random對象。 – mason

+2

初始化你的_min爲1000 –

+1

@amitdayama這就是我正在尋找的。 – ksg

回答

24
//Generate RandomNo 
    public int GenerateRandomNo() 
    { 
     int _min = 1000; 
     int _max = 9999; 
     Random _rdm = new Random(); 
     return _rdm.Next(_min, _max); 
    } 

你需要一個4位數字代碼,開始與1000

+0

請注意,在'public int GenerateRandomNo()'上面移動'Random _rdm = new Random();'會產生更好的結果。 – Brian

+0

完美解決方案! –

6

241是一個四位數字,如果你使用前導零:0241.

顯示返回的數量與格式字符串是這樣的:

String.Format("{0:0000}", n);

5

0是一樣的0000。

241是一樣的0241.

你可以格式化整數字符串具有前導零。

2

使用:INT _min = 1000;

或使用的情況下,0領先,如果你想0241

0

你可以考慮這樣的事情。

int length = 4; 
int number = 50; 
string asString = number.ToString("D" + length); 

上面的代碼給出結果0050

同樣可以嘗試轉換爲字符串和驗證。

8

使用此代碼來代替:

private Random _random = new Random(); 

public string GenerateRandomNo() 
{ 
    return _random.Next(0, 9999).ToString("D4"); 
} 
+1

爲什麼這樣更好? – Necromancer

+0

@Moon能幫我解釋一下'.ToString(「D4」)是什麼? –

+0

@YusrilMaulidanRaji它用於填充前導零的數字。請參閱:https://docs.microsoft.com/en-us/dotnet/standard/base-types/how-to-pad-a-number-with-leading-zeros –

2
Random generator = new Random(); 
string number = generator.Next(1, 10000).ToString("D4"); 
1

只需一行代碼

int num = new Random().Next(1000, 9999); 
0

我建議創建新的列表,並檢查這個列表中包含的任何數量的

var IdList = new List<int>(); 
do 
{ 
    billId = random.Next(1, 9000); 
} while (IdList.Contains(billId)); 
IdList.Add(billId);