Meg lehet oldani egyszerűbben?
Még csak most tanulom a programozás. Meg lehet ezt a kis programot írni egyszerűbben is, mert mire befejeztem már majdnem, hogy én is belegabalyodtam.
Most attól, hogy bemásoltál egy kódot még nem lett effektívebb a megoldásod :D
Ha kiszámolod a műveletigényét, akkor rájössz, hogy nem a legeffektívebb megoldás. 1 millió random számot generálsz!
using System;
namespace Lotto
{
class MainClass
{
public static void Main (string[] args)
{
bool[] szamok = new bool[91];
int szam, darab = 0;
char choose = '1';
char[] validChar = { '0', '5', '6', '7' };
bool jo = false;
byte melyik;
Random rnd = new Random ();
do {
darab = 0;
jo = false;
while (!jo) {
Console.Clear();
Console.WriteLine ("Milyen lottóhoz szeretnél számokat generálni?\n5 - Ötös lottó\n6 - Hatos Lottó\n7 - Skandináv lottó\n\n0 - Kilépés\n");
choose = Console.ReadKey ().KeyChar;
for(int i = 0; i < 4; i++) if (choose == validChar[i]) jo = true;
}
byte.TryParse (Convert.ToString (choose), out melyik);
for (int i = 1; i < 91; i++) szamok [i] = false;
Console.Clear();
while (darab < melyik) {
szam = rnd.Next (1, 90);
if (szamok [szam]) szam = rnd.Next (1, 90);
else {
szamok [szam] = true;
darab++;
}
}
for (int i = 1; i < 91; i++) if (szamok [i])Console.Write (i + " ");
Console.ReadLine ();
} while (choose != '0');
}
}
}
Akkor ezek utan el tudod magyarazni szamokban is, hogy a keveros megoldas miert hatekonyabb, mint az altalam felvazolt abban az esetben, ha csak egy sorsolas eredmenyere vagyunk kivancsiak?
Mert kodolasi stilus szempontjabol meg azt mondom rendben. De muveletigeny vagy memoria szempontjabol...
"ha csak egy sorsolas eredmenyere vagyunk kivancsiak"
Egy sorsolást még én is elvégzek gyorsan fejben, kit érdekel ott az optimalizálás. Ha 1 sorsolás kell csak akkor szép kódot kell írni, ha hatékony akkor pedig hatékony megoldást szép kóddal, ami a keverés. Ami 5 számot kever 90 szám közül 1 sorsolásnál, nem az összeset. Lehetne mindet keverni egyszerre és akkor egy keverésből lenne 18 ötös lottó sorsolás, de a mai fordítók jól optimalizálnak így ez nem gyorsítana rajta.
Próbálj meg a módszereddel 1-100 -ig 95 egyedi véletlenszerű számot generálni, és fel fog tűnni, hogy miért nem hatékony egyedi számok generálásánál.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!