Kezdőoldal » Számítástechnika » Programozás » C# Random hiba, mit ronthattam...

C# Random hiba, mit ronthattam el?

Figyelt kérdés

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.


2012. júl. 25. 12:58
 1/10 A kérdező kommentje:
Az, hogy a rendszám 2. része csak 1 számból áll ne zavarjon senkit, így írták a feladatban.
2012. júl. 25. 12:59
 2/10 anonim ***** válasza:
Ránézésre nem tudom megállapítani, hol a hiba, viszont a debuggert nem véletlenül találták ki. Ha tudni akarsz programozni, akkor azt is tudni kell használni. Szépen lépkedj rajta végig, és figyeld meg, hogy mikor mi milyen értéket kap.
2012. júl. 25. 13:21
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:

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.

2012. júl. 25. 13:53
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:

Í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.

2012. júl. 25. 14:15
 5/10 _Jessy_ ***** válasza:
Valószínűleg statikus az Auto rendszam tagja.
2012. júl. 25. 17:39
Hasznos számodra ez a válasz?
 6/10 _Jessy_ ***** válasza:
ja bocs... most vettem észre, hogy nem az :)
2012. júl. 25. 17:41
Hasznos számodra ez a válasz?
 7/10 _Jessy_ ***** válasza:

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ó.

2012. júl. 25. 17:52
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

A random objektumot tedd ki a függvényen kívülre:


static Random r = new Random();


private string RendszamGeneralas()

{

...

2012. júl. 25. 18:57
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

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.

2012. júl. 25. 19:11
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:

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!

2012. júl. 25. 22:09

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!