webForumDet fria alternativet

Random C#

3 svar · 365 visningar · startad av tronez

tronezMedlem sedan juli 2001728 inlägg
#1

Jag får inte Random funktionen att funka i C#


string[] fname = { "Robert", "Anders", "Göran", "Glenn" };
			string[] ename = { "Gunnarson", "Bengtsson", "Andersson", "Jönsson" };
			
			while(i != 4)
			{
				Random fornamn   = new Random();
				Random efternamn = new Random();

				int b = fornamn.Next(0,4);
				int t = efternamn.Next(0,4);

				comboBox1.Items.Add(fname[b] + " " + ename[t]);
				i++;
			}

Problemet är att alla tal blir 4, så det blir samma namn i comboBoxen... hur löser man det?

Mc FettoMedlem sedan nov. 20022 355 inlägg
#2

/läste frågan en gång till :r

renholmMedlem sedan apr. 20012 266 inlägg
#3

För det första måste du använda samma Random objekt för alla random värden du ska ha. För det andra känns det som om du lite onödigt deklarerar int b och t, går lika bra att lägga in rnd.Next i fname oh ename;

string[] fname = { "Robert", "Anders", "Göran", "Glenn" };

string[] ename = { "Gunnarson", "Bengtsson", "Andersson", "Jönsson" };

Random rnd  = new Random();

while(i != 4)
{
   comboBox1.Items.Add(fname[rnd.Next(0,4)] + " " + ename[rnd.Next(0,4)]);
   i++;
}
GladhMedlem sedan maj 20012 812 inlägg
#4

"Problemet" med Random är att den inte är random. Den ger dig en olika tal varje gång du kallar på den. Men det är ändå alltid samma.

Säg att du skapar en random som du gör och sedan hämtar 5 tal, då kanske de blir.

4,20,12,6,9

Nästa gång du gör likadant får du fölajnde serie:
4,20,12,6,9

Nästa gång lika så och nästa gång osv osv.

Detta är INGEN bug, det skall vara så, för att man skall kunna felsöka sin kod. Det man gör är att man ger Random funktionen ett frö, alltså ett start värde som den skall utgå ifrån, är det samma frö, får du samma serie, är det olika frö, får du olika serier.

Hur får man ett bra frö då? Man använder sig av tiden.

Random oRandom = new Random(unchecked((int)DateTime.Now.Ticks));

Ditt random objekt kommer nu att ge dit olika värden varje gång som det skapas.

- M

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)