Avatar billede tobi17 Nybegynder
12. april 2014 - 07:45 Der er 3 kommentarer og
1 løsning

Random problem

Hej derude, kan I hjælpe mig lidt. Jeg ønsker at generere 10 forskellige numre som jeg henter gennem funktionen gn.Result() i en anden klasse.

Problemet er dette returner 10 ens numre. Det lykkedes hvis jeg omskriver til det sidste eksempel, men vil gerne vide hvordan man henter gennem uden omskrivning af GetNumber klassen. Har søgt på nettet og brugt mange timer på finde en løsning selv, jeg må være tæt på :)

//ved klik genereres 10 forskellige numre
private void button1_Click(object sender, EventArgs e)
        {
            GetNumber gn = new GetNumber();//objekt af klassen GetNumber

            int[] times = new int[10];

            for (int i = 0; i != times.Length; i++)
            {
                times[i] = i + 1;

                listBox1.Items.Add(times[i] + " result: " + gn.Result());//kald Result() gennem objekt gn
            }
        }

class GetNumber
    {
        private Int32 number; //field

        Random rd = new Random();

        public GetNumber() //constructor
        {
            RandNumber();
        }

        public void RandNumber()
        {
            number = rd.Next(1, 10);
        }

        public Int32 Result()
        {
            return number;
        }
    }
----------------------------------------------------------------
//Virker hvis GetNumber omskrives til nedenstående:
class GetNumber
    {
        private Int32 number; //field

        Random rd = new Random();

        public GetNumber() //constructor
        {
            Result(); //kald på Result() i stedet for RandNumber()
        }

        //public void RandNumber()
        //{
        //    number = rd.Next(1, 10);
        //}

        public Int32 Result()
        {

            return number = rd.Next(1, 10);
        }
    }
Avatar billede arne_v Ekspert
12. april 2014 - 15:09 #1
Random rd = new Random();

initierer random number generator udfra tid.

Saa hvis den kaldes N gange med mikrosekunder imellem saa faar du mange generatorerer med samme state og derfor samme tal ud fra dem.

Loesningen er som du har gjort kun at initalisere en gang.
Avatar billede arne_v Ekspert
12. april 2014 - 15:10 #2
Jeg naevner problemet her:

http://www.eksperten.dk/guide/680
Avatar billede tobi17 Nybegynder
12. april 2014 - 17:24 #3
tak for svaret, super artikel. Ja godt nok vil den kunne generere et random nummer når jeg tilføjer en knap og den så skifter resultat pr. klik. Men når det gælder et enkelt klik som skal generere mange numre på én gang, må man "samle" koden.

afgiv gerne et svar, du gav mig klarhed over random :)
Avatar billede arne_v Ekspert
12. april 2014 - 18:13 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester