Avatar billede sholm Nybegynder
23. september 2008 - 08:26 Der er 4 kommentarer og
1 løsning

Random fra en liste

Hej

Jeg har en liste med nogle integers f.eks. <1,2,3,4,5> jeg vil gerne hente 3 tilfældige tal fra denne liste. Jeg vil dog kun have et tal en gang - altså dur f.eks. <1,1,3> ikke.

På forhånd tak :)
Avatar billede aaberg Nybegynder
23. september 2008 - 08:44 #1
Her er lidt kode som kan gøre det du leder efter:

Random rnd = new Random();

List<int> listeMedAlleTal = new List<int>(new int[] { 1, 2, 3, 4, 5 });
List<int> listeMedTilfeldigeTal = new List<int>();

//Find 3 tilfeldige tal fra listeMedAlleTal og sæt dem ind i listeMedTilfeldigeTal
for (int i = 0; i < 3; i++)
{
  int tilfeldigIdx = rnd.Next(0, listeMedAlleTal.Count);
  listeMedTilfeldigeTal.Add(listeMedAlleTal[tilfeldigIdx]);
               
  //Fjern tallet fra listeMedAlleTal, så det ikke kan udvælges igen.
  listeMedAlleTal.RemoveAt(tilfeldigIdx);
}
Avatar billede j3ppah Novice
23. september 2008 - 08:55 #2
du kunne jo også bare bruge en MathRandom ???.. og så selvfølgelig lave et checkup på at det ikke må være samme tal flere gange
Avatar billede sholm Nybegynder
23. september 2008 - 08:57 #3
Det er jo perfekt, jeg havde ikke lige overvejet at man bare kan fjerne den fra listen...

Kom endelig med et svar.

Takker og god dag til dig!
Avatar billede aaberg Nybegynder
23. september 2008 - 09:05 #4
Tak, i lige måde :-)
Avatar billede hmortensen Nybegynder
23. september 2008 - 18:00 #5
Og en LINQ løsning:
List<int> listeMedTilfaeldigeTal = listeMedAlleTal.OrderBy(x => Guid.NewGuid()).Take(3);
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