Avatar billede elmoe Juniormester
11. februar 2011 - 00:12 Der er 6 kommentarer og
1 løsning

Vælg random nummer undtagen specifikke numre

Sådan her kan jeg udtrække et tilfældigt nummer fra 1 til 10.

Random random = new Random();
return random.Next(1, 10);

Hvad gør jeg hvis jeg f.eks. vil trække et tilfældigt nummer ud fra 1 til 10 men nummer 6 må ikke kunne udtrækkes.

Eller hvis f.eks. nummer 7 og 2 ikke må kunne udtrækkes?
Avatar billede arne_v Ekspert
11. februar 2011 - 00:31 #1
Lav en List<int> med de numre du kan bruge og brug random.Next(1, list.Count) som index ind i list.
Avatar billede mcb2001 Nybegynder
11. februar 2011 - 11:32 #2
en anden løsning er at lave en while løkke, og så kontrollere at det tal du har fået fra din random ikke er i listen.
Men det er et spørgsmål om hvad der er mest effektivt - Arnes løsning vil "næsten" altid køre hurtigere end min, men du kan bare risikere at det er en meget kompleks liste du skal lave, og så er det nemmere kodemæssigt blot at holde styr på hvilke du ikke vil have.
Avatar billede elmoe Juniormester
14. februar 2011 - 22:30 #3
Tak arne_v.

Jeg er dog ikke helt med. Tænker du på noget ala det her:

private int randomNumber()
{
  List<int> liste = new List<int>();
  liste.Add(5);
  liste.Add(7);
  liste.Add(9);

  Random random = new Random();
  return liste.IndexOf(random.Next(1, liste.Count));
}

Alt jeg får returneret er -1. Jeg skulle jo få enten 5, 7 eller 9. Hvad gør jeg galt?
Avatar billede arne_v Ekspert
14. februar 2011 - 22:38 #4
return liste[random.Next(0, liste.Count)];
Avatar billede elmoe Juniormester
14. februar 2011 - 23:26 #5
Det virker upåklageligt.

Tusind tak arne_v. Du har lige reddet min dag :-)

Du må meget gerne komme med et svar.
Avatar billede arne_v Ekspert
15. februar 2011 - 02:20 #6
svar
Avatar billede arne_v Ekspert
15. februar 2011 - 02:24 #7
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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