C# Hjälp med en siffergenerator

Permalänk
Medlem

C# Hjälp med en siffergenerator

Sitter här och försöker göra ett tärningsspel. Vill att min generator ska generera 3 olika siffror(inte olika varje gång men att de skiljer sig lite om ni förstår vad jag menar... )Just nu så sätts mina tre variabler dice1, dice2 och dice3 till samma siffra. Vill såklart att de ska slumpmässigt genererade. Vad göra?

Tack på förhand // K

//Metoden
private int RandomNumber(int min, int max)
{
Random generator = new Random();

return generator.Next(1, 7);
}

//Här vill jag att dice1, dice2 och dice3 sätts till olika siffror..
int dice1 = RandomNumber(1, 7);

label11.Text = Convert.ToString(dice1);

int dice2 = RandomNumber(1, 7);

label12.Text = Convert.ToString(dice2);

int dice3 = RandomNumber(1, 7);

label13.Text = Convert.ToString(dice3);

Permalänk
Medlem

En slumpgenerator är egentligen bara pseudo-slumpmässig, dvs. den använder en matematisk funktion för att få fram en lista med tal som ser slumpmässiga ut. För att starta genereringen så används ett frö, eller seed på engelska. När du skapar en instans av Random utan argument så används den nuvarande tiden som frö. Eftersom du skapar en ny instans av Random varje gång du anropar RandomNumber så finns risken att samma frö används, eftersom datorns klocka inte hinner ändras mellan anrop till RandomNumber. Du får därför samma resultat varje gång. Lösningen är helt enkelt att bara skapa en instans av Random och återanvända den, dvs. flytta ut instantieringen av slumpgeneratorn till någonstans utanför RandomNumber.

Permalänk
Medlem

Okej, jag förstår varför det blir som det blir men är inte riktigt med på vad du menar med att flytta ut...

Men borde man inte kunna lägga in någon sorts sleep mellan varje return?

Edit1: Verkar som om thread(500); fungerar bra. Lite jobbig dock eftersom det tar 1.5 sekunder för all siffror att tas fram. Går säkert att sänka.
Skulle du vilja förklara hur du menar med att flytta ut..?

Edit2: Jag löste det!

Tack så mycket för hjälpen!