Random numbers without dublicate
Здравейте, искам да попитам един масив с random числа (1-80), как мога да принтирам 20 от тях без да се повтарят ?
Здравейте, искам да попитам един масив с random числа (1-80), как мога да принтирам 20 от тях без да се повтарят ?
За да подсигуриш, че няма да има повтарящи се елементи, трябва да помниш кои си взел по някакъв начин. Мисля, че най-лесно е да ползваш един HashSet, с цикъл да го пълниш докато не стане с размер 20, след което принтираш елементите му. Взимането на произволен елемент от масива става с Random, който ти връща произволен индекс.
Здрасти! Най-лесния вариант е да ги набуташ в масив или списък и при въвеждането на ново число да проверяваш дали се съдържа вече в масива, ако не - добавяш го. Когато станат 20 принтираш.
Точно това искам да направя, но не мога да го измисля, предпологам, че с един if else ще стане, но не мога да го измисля.
Ако не си запознат със списъците, направи го - безкрайно полезно е. Ето каква е идеята създаваш списък от int(ако са ти int числата)
List<int> yourList = new List<int>(); (ако не сработи виж какъв using трябва да добавиш).
Не искам да ти казвам всичко, за да намериш в нета каквото ти е нужно, това е много полезно.
После във while цикъл си генерираш числата м/у 0 и 80. Когато станат 20 спираш(в List не е length, a count т.е. yourList.count).
Добавянето става с yourList.Add(number) - където number e генерираното вече число.
И оставя преди да го добавиш да провериш дали го има т.е.
if(!yourList.Contains(number))
{
yourList.Add(number)
}
Какво прави този код - ако не се съдържа това число вече - добави го. Така си сигурен, че няма да се повтори. Ако това ти е трудно варианта с масив е с повече писане.
Пускаш един цикъл до дължината на масива и проверяваш всяко едно число от него дали е равно на текущото генерирано. Ако да - break, ако не - добавяш го. Пусни някакъв код, който си написал, ако не успееш, да ти дам насоки. Успех!
С масивите съм една идея по-запознат за това мислех с тях да се пробвам, сега ще видя със списаците, благодаря ти много за помоща !
Това е по-доброто предложение, защото HashSet пази само уникални елементи и достъпът до тях след това е много бърз. Само че като ги вкарваш трябва да го правиш с while цикъл и проверка по бройката елементи в seta, защото ако го правиш с for цикъл с 20 итерации, ако си случил на повтарящи се ще имаш по-малко бройки в сета накрая.