2015-11-17 21 views
11

Tôi muốn tạo một số ngẫu nhiên gồm 4 chữ số. Đây là mã dưới đây những gì tôi đã cố gắngSố ngẫu nhiên gồm 4 chữ số duy nhất trong C#

Mã để tạo ra không ngẫu nhiên

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

Vấn đề là tôi đã nhận được một không ngẫu nhiên có giá trị 241 mà không phải là một 4 number.Is chữ số là có bất kỳ vấn đề với mã.

Mọi trợ giúp sẽ được đánh giá cao.

+1

Cảnh báo. Nếu bạn gọi hàm của bạn nhiều lần liên tiếp, bạn có thể nhận được các giá trị giống nhau. Tốt hơn để tái sử dụng đối tượng Ngẫu nhiên của bạn. – mason

+2

khởi tạo _min của bạn là 1000 –

+1

@amitdayama đây là những gì tôi đang tìm kiếm. – ksg

Trả lời

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

bạn cần một mã 4 chữ số, bắt đầu với 1000

+0

Lưu ý rằng việc di chuyển 'Random _rdm = new Random();' trực tiếp trên 'public int GenerateRandomNo()' sẽ mang lại kết quả tốt hơn. – Brian

+0

giải pháp hoàn hảo! –

6

241 là một số có bốn chữ số, nếu bạn sử dụng số không hàng đầu: 0241.

hiển thị số trở lại với một chuỗi định dạng như thế này:

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

5

0 cũng giống như 0000.

241 giống với 0241.

Bạn có thể định dạng số nguyên thành chuỗi có số 0 đứng đầu.

2

sử dụng: int _min = 1000;

hoặc sử dụng hàng đầu 0 trong trường hợp nếu bạn muốn 0241

0

Bạn có thể xem xét điều gì đó tương tự.

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

Đoạn mã trên cho kết quả 0050.

Tương tự như vậy bạn có thể thử chuyển sang chuỗi và xác minh.

8

Sử dụng mã này để thay thế:

private Random _random = new Random(); 

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

Tại sao nó tốt hơn theo cách này? – Necromancer

+0

@Moon bạn có thể giúp tôi giải thích '.ToString (" D4 ")' là gì? –

+0

@YusrilMaulidanRaji nó được sử dụng để đệm một số có số 0 đứng đầu. Xem: 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

Chỉ cần một dòng mã

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

Tôi đề nghị để tạo danh sách mới và kiểm tra xem danh sách này chứa bất kỳ số

var IdList = new List<int>(); 
do 
{ 
    billId = random.Next(1, 9000); 
} while (IdList.Contains(billId)); 
IdList.Add(billId); 
Các vấn đề liên quan