C# véletlenszerű számgenerálásnál meglehet adni "kivéve" értéket? (bővebben lent)
Sziasztok!
Véletlen szám generálásánál meglehet adni kivételt? A következő a helyzet:
Végrehajtatok két véletlen szám generálást 0,100 értékek között. A második generálásnál viszont feltételül kéne adnom, hogy amit generál az nem lehet egyenlő az első generálásnál kapott értékkel? Első körben 'if' függvényre és a végén 'goto;' --> újragenerálásra gondoltam, de meglehet oldani esetleg egy sorban valami '!= X' megadással esetleg az egyenletben?
Sziasztok!
Egyetemen mindenkibe beleverik, hogy a GOTO használata tilos, mert ott struktúrált programozást oktatnak, és szebb a kód GOTO nélkül. Az, hogy a fordító ebből a gyönyörű optimális kódodból hogy csinál JMP-t és JNZ-ket, meg feltételes ugrásokat, az más tészta. Meg az is, hogy a GOTO helyett alkalmazott többszintes megoldásokkal, és mély if-fákkal ugyanúgy lehet ronda, átláthatatlan spagettikódot írni.
Hogy hozzátegyek valamit:
Esetedben a GOTO struktúrált megfelelője a függvényhívás: Szervezd ki a generáló kódot egy függvénybe, és hívd azt meg.:
private const int MIN = ...;
private const int MAX = ...;
private static int Generate(Random rnd) => rnd.Next(MIN, MAX);
public int Main()
{
var rnd = new Random(); // Ebből osztályonként 1-et használj, kérlek!
int num1 = General(rnd);
int num2 = 0;
do
{
num2 = General(rnd);
} while (num1 == num2);
}
De a válaszok elején 80%-os azzal a tömbös megoldással nagyon jót mondott, főleg, ha az intervallum kicsi. Esetedben sok, felesleges memóriát fogyasztana. Ez akkor jó, ha mondjuk 100-ból 90 számot kellene ismétlés nélkül legenerálnod, mert akkor probléma lesz az ütközés, és kevesebb memóriát használsz feleslegesen.
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!