C# tömbök és random számok
Tömbök használata és működése
A tömbök fix méretű, indexelhető adatszerkezetek. Az indexelés 0-tól indul, tehát az első elem indexe 0, az utolsóé pedig a tömb hossza - 1.
Miért használjunk tömböket?
- Ha sok azonos típusú adatot kell kezelni, és azokat index alapján szeretnénk elérni.
- Ha ciklusokkal szeretnénk végighaladni az adatokon.
Memóriakezelés
A tömbök a memóriában egymás mellett helyezkednek el, így gyorsan elérhetők az elemek. Azonban a méretük futás közben nem változtatható.
Egydimenziós tömb létrehozása
Egydimenziós tömb esetén az elemek egy sorban helyezkednek el. A tömb minden eleme azonos típusú.
int[] numbers = new int[5]; // 5 elemű tömb, alapértelmezett értékekkel (0)
numbers[0] = 10;
numbers[1] = 20;
Console.WriteLine(numbers[0]); // 10
Tömb inicializálása értékekkel
Tömböt létrehozhatunk úgy is, hogy azonnal megadjuk az elemeket.
string[] fruits = { "alma", "banán", "cseresznye" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
Tömb bejárása for ciklussal
A tömb elemein végigmehetünk ciklussal, az indexek segítségével. Ez lehetővé teszi, hogy minden elemet elérjünk.
int[] nums = { 1, 2, 3, 4, 5 };
for (int i = 0; i < nums.Length; i++)
{
Console.WriteLine($"Index {i}, érték: {nums[i]}");
}
Kétdimenziós tömb (mátrix)
Kétdimenziós tömbök (mátrixok) esetén az elemek sorokban és oszlopokban helyezkednek el.
int[,] matrix = new int[2, 3]
{
{1, 2, 3},
{4, 5, 6}
};
Console.WriteLine(matrix[1, 2]); // 6
Tömb tulajdonságok és metódusok
A tömböknek vannak beépített tulajdonságaik (pl. Length), illetve az Array osztály számos hasznos metódust biztosít (pl. rendezés, megfordítás).
int[] arr = { 5, 2, 8, 1 };
Console.WriteLine(arr.Length); // elemszám: 4
Array.Sort(arr); // rendezés növekvő sorrendben
Array.Reverse(arr); // megfordítás
Véletlenszám generálása és alkalmazása
Sok programban szükség van véletlenszerű adatokra (pl. játékok, szimulációk, tesztadatok). A C# Random osztálya lehetővé teszi véletlenszámok generálását különböző tartományokban.
Matematikai háttér
A számítógépek valójában nem tudnak valódi véletlenszámokat előállítani, hanem ún. pszeudo-véletlenszámokat generálnak algoritmusok segítségével. Ezek a számok elég "véletlenszerűnek" tűnnek a legtöbb alkalmazás számára.
Random osztály használata
Random rnd = new Random();
int num1 = rnd.Next(1, 11); // 1 és 10 közötti egész szám
double num2 = rnd.NextDouble(); // [0.0, 1.0) intervallumban lebegőpontos szám
Console.WriteLine(num1);
Console.WriteLine(num2);
Véletlenszámok tömb feltöltésére példa
Gyakori feladat, hogy egy tömböt véletlenszámokkal töltsünk fel. Ez jól kombinálható a ciklusok és tömbök ismeretével.
Random rnd = new Random();
int[] randomNumbers = new int[5];
for (int i = 0; i < randomNumbers.Length; i++)
{
randomNumbers[i] = rnd.Next(100); // 0-99 közötti szám
}
foreach (int n in randomNumbers)
{
Console.WriteLine(n);
}
Feladatok
-
Készíts egy programot, amely létrehoz egy 10 elemű egész szám tömböt, és feltölti azt 10-től 50-ig terjedő véletlenszámokkal. Ezután írd ki az összes számot a tömbből, ami kisebb 25-nél.
-
Készíts egy programot, amely létrehoz egy 30 elemű valós szám tömböt, és feltölti azt 0-től 1-ig terjedő véletlenszámokkal. Ezután add össze a számok értékét és írd ki az eredményt.
-
Készíts egy programot, amely létrehoz egy 20 elemű egész szám tömböt, és feltölti azt 30-től 300-ig terjedő véletlenszámokkal. Ezután írd ki az összes páros számot a tömbből.