web-dev-qa-db-fra.com

Numéro aléatoire unique à 4 chiffres en C #

Je veux générer un nombre aléatoire unique à 4 chiffres. Voici le code ci-dessous ce que j'ai essayé:

Code pour générer un nombre aléatoire

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

Le problème est que j'ai reçu un non aléatoire avec la valeur 241 qui n'est pas un nombre à 4 chiffres. Y at-il des problèmes avec le code?

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

vous avez besoin d'un code à 4 chiffres, commencez par 1000

36

Utilisez ce code à la place:

private Random _random = new Random();

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

0 est identique à 0000.

241 est identique à 0241.

Vous pouvez formater le nombre entier en une chaîne avec un zéro non significatif.

5
Steve Wellens

Juste un code de ligne

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

utilisez: int _min = 1000;

ou utilisez le préfixe 0 au cas où vous voudriez 0241

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

Vous pouvez envisager quelque chose comme ça.

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

Le code ci-dessus donne le résultat 0050.

De même, vous pouvez essayer de convertir en chaîne et de vérifier.

0
Baskar

Je suggère de créer une nouvelle liste et de vérifier si cette liste contient un nombre

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