Random numbers without dublicate
Здравейте, искам да попитам един масив с random числа (1-80), как мога да принтирам 20 от тях без да се повтарят ?
Здравейте, искам да попитам един масив с random числа (1-80), как мога да принтирам 20 от тях без да се повтарят ?
Здрасти! Най-лесния вариант е да ги набуташ в масив или списък и при въвеждането на ново число да проверяваш дали се съдържа вече в масива, ако не - добавяш го. Когато станат 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, ако не - добавяш го. Пусни някакъв код, който си написал, ако не успееш, да ти дам насоки. Успех!
С масивите съм една идея по-запознат за това мислех с тях да се пробвам, сега ще видя със списаците, благодаря ти много за помоща !
Списъците имат предимство, че не е нужно да знаеш дължината им. Добавяш динамично, колкото елемента искаш. Много по-удобни са и се пише по-малко. Сподели после код, за да видим как си се справил, независимо дали успееш или не.
Друга причина че избрах масива, е че знам колко да ми голям. Цялата програм, която се мъча да направя е нещо като тото, просто ми хрумна да го направя. Когато го довърша, ще гледам да е днес, ще кача целия код.
OK. Ако зациклиш някъде питай :)
Използвай HashSet<int> за проверките дали числото е в колекцията. Точно тази структура от данни се използва, когато искаш да имаш точно по един елемент без дубликати в колекция. ;)
Със сигурност по-добро решение от моето, но си мислех, че стъпка по стъпка човек трябва да учи колекциите, а доколкото си спомням след масивите използвахме списъци. Затова и моята идея беше тази. Но погледни защо е по-добре да се използва HashSet, там реално няма проверка за уникалност, можеш да потърсиш в Google защо. Мерси Владо! :)
Ако не си запознат със списъците, направи го - безкрайно полезно е. Ето каква е идеята създаваш списък от 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))
{
}
Ако не си запознат със списъците, направи го - безкрайно полезно е. Ето каква е идеята създаваш списък от 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))
{
}
Ако не си запознат със списъците, направи го - безкрайно полезно е. Ето каква е идеята създаваш списък от 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))
{
}
Със сигурност по-добро решение от моето, но си мислех, че стъпка по стъпка човек трябва да учи колекциите, а доколкото си спомням след масивите използвахме списъци. Затова и моята идея беше тази. Но погледни защо е по-добре да се използва HashSet, там реално няма проверка за уникалност, можеш да потърсиш в Google защо. Мерси Владо! :)