2015-11-17 5 views
11

Voglio generare un numero casuale a 4 cifre univoco. Questo è il codice sotto quanto ho cercatoNumero casuale composto da 4 cifre in C#

codice per la generazione casuale senza

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

Il problema è che ho ricevuto alcun casuale con valore 241 che non un 4 number.Is cifra c'è qualche problema con il codice.

Qualsiasi aiuto sarà molto apprezzato.

+1

Avviso. Se chiami la tua funzione più volte di seguito, potresti ottenere gli stessi valori. Meglio riutilizzare il tuo oggetto casuale. – mason

+2

inizializza il tuo _min come 1000 –

+1

@amitdayama questo è quello che stavo cercando. – ksg

risposta

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

è necessario un codice di 4 cifre, iniziare con 1000

+0

Si noti che lo spostamento di 'Random _rdm = new Random();' direttamente sopra 'public int GenerateRandomNo()' produrrà risultati migliori. – Brian

+0

soluzione perfetta! –

6

241 è un numero di quattro cifre, se si utilizza zeri iniziali: 0241.

Visualizzare il numero restituito con una stringa di formato come questo:

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

5

0 è lo stesso 0000.

241 è uguale a 0241.

Si può formattare il numero intero per una stringa con uno zero.

2

uso: int _min = 1000;

o l'uso 0 iniziale nel caso in cui se si vuole 0241

0

si può considerare qualcosa di simile.

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

Il codice di cui sopra dà il risultato 0050.

Allo stesso modo si può provare la conversione in stringa e verificare.

8

Usa questo codice invece:

private Random _random = new Random(); 

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

Perché è meglio così? – Necromancer

+0

@Moon potresti aiutarmi a spiegare cosa '.ToString (" D4 ")' è? –

+0

@YusrilMaulidanRaji è usato per riempire un numero con zeri iniziali. Vedi: 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

Solo un codice di linea

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

suggerisco di creare nuova lista e verificare se questa lista contiene qualsiasi numero

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