C# Random hiba, mit ronthattam el?
Az a helyzet, hogy van egy Auto osztályom, véletlenszerű rendszám generátorral, de minden példánynak ugyanazt az értéket adja vissza, mit lehetne tenni?
Röviden így néz ki: [link]
Már próbáltam új osztályt létrehozni a rendszámnak, Randommal trükközni, de egyszerűen nem megy.
A for cikluson kívül van a randomizálás.
rendszamgen += "-";
rendszamgen += r.Next(0, 10);
ezt rakd bele.
Illetve ez jobb:
var random = new Random(System.DateTime.Now.Millisecond);
int randomNumber = random.Next(0, 10);
Fejből írtam, nem 100% -ékos a válasz de ha nem megy ránézhetek a kódra.
Így a válaszodra debuggoltam, ha sorban a program legelejétől megyek, akkor szépen minden autónak új rendszámot ad, de ha úgy ellenőrzöm, hogy az objektum deklarálás, és a rendszám generálás után kezdődjön a debug, és írja ki a rendszámokat, akkor ugyanaz a rendszáma mindegyik Auto példánynak. Ezt nem értem.
Összefoglalva, csak akkor ad különböző véletlenszerű értéket az autóknak, ha a rendszámgenerálást debugként végzem.
Naburus köszi, de nem azzal van a probléma.
Akárhogy is nézem, mennie kellene...
E helyett:
rendszamgen += CHARS[r.Next(CHARS.Length)];
írhatod ezt is:
rendszamgen += (char)r.Next('A' - 1, 'Z' + 1);
így nem kell a CHARS változó.
A random objektumot tedd ki a függvényen kívülre:
static Random r = new Random();
private string RendszamGeneralas()
{
...
Megoldás itt: [link]
Ha ez nem világos akkor néz utána.
public override string ToString()
{
return rendszam;
}
Ez lehet "private string rendszam;" public is, és akkor az előbbi kódrészlet felesleges.
Az segített, hogy kívülre kitettem static jelzővel a random objektumot.
Többi válasz is nagyon hasznos, köszönöm!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!