Kezdőoldal » Számítástechnika » Programozás » C# random számok ismétlés...

C# random számok ismétlés nélkül ?

Figyelt kérdés
Adott egy tömb, random számokkal, hogy töltsek fel egy új tömböt, hogy a számok ne ismétlődjenek?

2020. júl. 13. 01:30
 1/7 anonim ***** válasza:
93%

Generálásnál szerintem nem tudod kizárni az ismétlődést, de addig ismételheted a generálást amíg a tömb tartalmazza a generált számot.

Contains() metódussal meg tudod nézni hogy tartalmazza-e, ha nincs benne hozzáadod, ha benne van generálsz egy másikat, ismételd addig amíg nem találsz olyan számot ami még nincs benne.

2020. júl. 13. 02:32
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
29%

List<int> listNumbers = new List<int>();

int number;

for (int i = 0; i < 6; i++)

{

do {

number = rand.Next(1, 49);

} while (listNumbers.Contains(number));

listNumbers.Add(number);

}

2020. júl. 13. 03:35
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
81%

using System.Linq;


int[] uniqueNums=randomNums.Distinct().ToArray();

2020. júl. 13. 04:35
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:
4%
Nehogy közöld velünk a számok tipusát!
2020. júl. 13. 07:10
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:
68%

Erre több módszert is lehet találni.

Az általánosan használható technika az, hogy generálás után ellenőrzöd, hogy szerepelt-e az adott szám, és ha igen, akkor újra generálod. Főiskolán - egy lottószámsorsoló program kapcsán - ezért én nem kaptam maximális pontot, mondván "elméletileg lehet, hogy nagyon sokszor, akár végtelen sokszor ugyanazt a véletlenszámot kapom, és olyankor ez a megoldás nem működik". Ennek persze a valószínűsége kisebb, mint hogy én egy évben 52-szer nyerjem meg a lottóötöst, de tény, hogy ha véges mennyiségű értékből kell generálni, akkor van rá szebb módszer is: veszel egy tömböt, és feltöltöd a lehetséges elemekkel. (Lottószámsorsolás esetén 1-től 90-ig egész számokkal.) És nem magát a véletlenszámot generálod, hanem a tömbelem indexét. Ezután pedig azt az elemet törlöd a tömbből. (Így a maximális index is kisebb lesz.) Tehát az indexet választod ki random, és nem a konkrét értéket.

2020. júl. 13. 08:10
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
A valaszokat koszonom! A contains() metodust ismerem, de while ciklussal szeretnem megcsinalni, csak keptelen vagyok levezetni normalisan.
2020. júl. 13. 10:49
 7/7 anonim ***** válasza:
63%

Nem próbáltam ki, lehet hogy elírtam valamit de az elv ez lenne

[link]

Ez feltölt egy 10 elemű tömböt egyedi számokkal

2020. júl. 13. 18:20
Hasznos számodra ez a válasz?

További 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

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!