Hur genererar jag ett slumpmässigt int-nummer?

Hur genererar jag ett slumpmässigt heltal i C#?

Lösning

Klassen Random används för att skapa slumpmässiga tal. (Pseudo-slumpmässiga är det förstås.).

Exempel:

Random rnd = new Random();
int month  = rnd.Next(1, 13);  // creates a number between 1 and 12
int dice   = rnd.Next(1, 7);   // creates a number between 1 and 6
int card   = rnd.Next(52);     // creates a number between 0 and 51

Om du ska skapa mer än ett slumpmässigt tal bör du behålla instansen Random och återanvända den. Om du skapar nya instanser för nära inpå varandra kommer de att producera samma serie slumptal eftersom slumpgeneratorn seedas från systemklockan.

Kommentarer (7)

Var uppmärksam på att new Random() är seedad på aktuell tidsstämpel.

Om du vill generera enbart ett nummer kan du använda:

new Random().Next( int.MinValue, int.MaxValue )`

För mer information, titta på Random klassen, men observera:

Eftersom klockan har en ändlig upplösning kan man dock genom att använda den parameterlösa konstruktören för att skapa olika Random-objekt i nära följd skapa slumptalsgeneratorer som producerar identiska sekvenser av slumptal.

Använd därför inte den här koden för att generera en serie slumpmässiga tal.

Kommentarer (3)
Random r = new Random();
int n = r.Next();
Kommentarer (0)