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.
for ciklus meg van:
for (mit,honnan;meddig;hogy)
{
}
1. A goto átláthatatanná teszi a kódot, ha egy kódot többször kéne leírni, akkor kell függvényeket/eljárásokat használni.
2. Tölts fel egy tömböt 1-től 90-ig, keverd meg és vedd ki az első ötöt, minden más gányolás...hát barátom, nem tudom milyen rendszereket programozol, de szerintem ez a megoldás kifejezetten nem effektív: minek foglaljak le 90 számnak helyet a memóriában, ha nekem 5 kell? Futásidő szempontjából sem túl kellemes feltölteni egy 90 elemű tömböt, összekavarni valamilyen algoritmussal megint eléggé költséges, minek ezt végig csinálni?
Kérdező: ha ezt a megoldást választod, akkor úgy tudod feltölteni a tömböt, hogy egy for ciklusban végigléptetsz egy változót 1-től 90-ig és mindig a tömb i-edik elemének az i-t adod értékül.
Amúgy a legszebb megoldás, hogy csinálsz egy annyi elemű tömböt, ahány számot sorsolni akarsz, majd mindig generálsz egy random számot, majd megnézed, hogy van-e már olyan a tömbben, ha nincs, akkor beleteszed és ezt addig csinálod, amíg meg nem telik a tömb!
A feltöltésre már rájöttem :)
Már csak az összekeverés kell.
Ahogy olvasgatom már van 3-4 megoldás. Minél több annál jobb. :)
Aki szerint ineffektív a kavargatás, az meggyőződhet róla, hogy nem az.
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
private static int[] m_numbers_1_90 = new int[90];
private static readonly Random m_rng = new Random();
static void Main(string[] args)
{
for (var i = 0; i < m_numbers_1_90.Length; i++)
{
m_numbers_1_90[i] = i + 1;
}
using (StreamWriter sw = new StreamWriter("lotto_szamok.txt"))
{
for (var i = 0; i < 1000000; i++)
{
ShuffleFirstN(5, m_numbers_1_90, m_rng);
for (var j = 0; j < 5; j++)
{
sw.Write(m_numbers_1_90[j] + " ");
}
sw.WriteLine();
}
}
}
public static void ShuffleFirstN(int n, int[] container, Random rng)
{
for (var i = 0; i < n; i++)
{
var randomIndex = rng.Next(i, container.Length - 1);
var temp = container[i];
container[i] = container[randomIndex];
container[randomIndex] = temp;
}
}
}
}
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!