Slump

Lämna inget åt slumpen!

I många lägen kan det vara kul att slumpa fram ett tal. Det är t ex vanligt inom spel att man kanske gör en viss sorts skada, t ex mellan 15 och 32 poäng i skada. Att generera ett tal slumpmässigt kan man ha mycket skoj med. På engelska kallas detta för "a random value" eller "to randomize", på svenska "ett slumptal" eller "att randomisera". Det finns i C# ett objekt som heter just Random som vi kan använda till detta. Studera exemplet nedan:


//Skapa en randomerare som jag kan slumpa tal med
Random randomerare = new Random();

//Slumpa ett tal mellan 0 och 19
int tal = randomerare.Next(20);

//Slumpa ett tal mellan 15 och 31
tal = randomerare.Next(15, 32);

Jag har precis visat ovan hur man slumpar tal mellan 0 och något samt hur man slumpar tal mellan min och max. Slumpfunktionen som jag använder heter Next. Först måste jag skapa ett Random-objekt som jag kan använda, sedan måste jag kunna hantera Next(). Skickar du bara in ett tal till Next( tal ) så slumpas det ett värde mellan 0 och tal. Skickar du in två tal till Next( tal1, tal2) så slumpas det tal mellan tal1 och tal2.

Klurigt? Testa att göra ett Console Application för att testa hur det verkligen går till. Kolla på koden ovan och använd den. Skriv ut värdet som variabeln tal får med en Console.WriteLine(tal);. Testa att köra programmet några gånger.

Övningar

Övning 1

Konstruera ett Windows Application program (döp till slump) som ser ut som följande:

bild

När du trycker på knappen så ska det slumpas ett tal mellan 0 och 99. Detta tal ska skrivas ut i programmet med en label. Du behöver endast en button och en label.

Övning 2 (fortsättning)

Modifiera programmet så att det slumpar ett tal mellan 20 och 40.

Övning 3 (fortsättning)

Modifiera programmet och lägg till 2st NumericUpDown (du hittar dem i toolbox?en). Dessa ska bestämma ditt min- och max-värde som ska slumpas. Programmet kan se ut såhär:

bild

NumericUpDown

För att plocka värden från en NumericUpDown använder man property?n Value. Nu råkar det vara så att värdet kan vara ett decimalvärde medan Next bara tar int-värden. Vi måste kunna konvertera ett decimalvärde till en int. Det gör man följande, t ex:


int min = (int)numericUpDown1.Value;

Notera (int) framför själva numericUpDown1.Value. Det är ett sätt att konvertera mellan olika tal. När man går från string till int så behövs en int.Parse() men när man går från t. ex. decimal/double till int så gör man på detta sättet. Det är egentligen en enklare form av konvertering dels för att inget kan gå fel direkt. En int.Parse() kan ju som bekant krascha programmet om texten som matats in är felaktig.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Scroll to top