Duplicata possible:
Est-ce un bon moyen de générer une chaîne de caractères aléatoires?
Comment puis-je générer des chaînes alphanumériques aléatoires à 8 caractères en C #?
C'est le code que j'ai jusqu'à présent.
private void button1_Click(object sender, EventArgs e)
{
string Rand1 = RandomString(5);
string Rand2 = RandomString(5);
string Rand3 = RandomString(5);
string Rand4 = RandomString(5);
string Rand5 = RandomString(5);
textBox1.Text = Rand1 + "-" + Rand2 + "-" + Rand3 + "-" + Rand4 + "-" + Rand5;
}
private static Random random = new Random((int)DateTime.Now.Ticks);
private string RandomString(int Size)
{
StringBuilder builder = new StringBuilder();
char ch;
for (int i = 0; i < Size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
return builder.ToString();
}
MAIS il crée juste une chaîne aléatoire de 5 caractères. Je veux qu'il crée une chaîne de 5 caractères et entiers. Comment pourrais-je faire ça? Merci d'avance!
Utilisez un tableau d'entrée pour tirer vos valeurs de:
private static string RandomString(int length)
{
const string pool = "abcdefghijklmnopqrstuvwxyz0123456789";
var builder = new StringBuilder();
for (var i = 0; i < length; i++)
{
var c = pool[random.Next(0, pool.Length)];
builder.Append(c);
}
return builder.ToString();
}
Ou la solution (inévitable) de Linq:
private static string RandomString(int length)
{
const string pool = "abcdefghijklmnopqrstuvwxyz0123456789";
var chars = Enumerable.Range(0, length)
.Select(x => pool[random.Next(0, pool.Length)]);
return new string(chars.ToArray());
}
Copie de la réponse de jon skeet ... https://stackoverflow.com/a/976674/67824
Random Rand = new Random();
public const string Alphabet =
"abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public string GenerateString(int size)
{
char[] chars = new char[size];
for (int i=0; i < size; i++)
{
chars[i] = Alphabet[Rand.Next(Alphabet.Length)];
}
return new string(chars);
}
remplacer
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
par
string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ch=chars[random.Next(chars.Length)];
Notez que votre code ne crée pas de chaînes aléatoires imprévisibles. En particulier, il n'y a que 2 milliards de résultats possibles, et si votre ordinateur redémarre souvent, certains sont beaucoup plus probables que d'autres.
Si vous voulez des chaînes aléatoires imprévisibles, vous devez utiliser RNGCryptoServiceProvider . Vous pouvez affiner un exemple sur https://stackoverflow.com/a/1344255/445517 , il vous suffit d'ajouter les tirets.