Top.Mail.Ru
Ответы

Рандом без повторения C++

Мне нужно сделать так, чтобы выдавалось определённое количество рандомных чисел, только сделать это таким образом, чтобы если например уже выпадало число 2, и оно выпало заново, в таком случае нужно сделать другое рандомное число, и делать его до того момента, пока оно не будет отличаться от всех которые уже были сгенерированы.

По дате
По рейтингу
Аватар пользователя
Новичок

Делаешь массив для сгенерированных чисел.
Генерируешь число. Если оно есть в массиве то повторяешь генерацию (циклом while можно). Когда нашел неповторяющееся число добавляешь его в массив.

Аватар пользователя
Просветленный

создал булеву переменную и устанавливаешь бит - номер бита это выпавшее число. Если такое уже установлено берешь любое соседнее, чтобы быстрее работало

Аватар пользователя
Просветленный

Что нужно получить в итоге? Набор различных случайных чисел из некоего дискретного множества или континуального диапазона? Так сразу и надо генерировать кортеж с уникальными элементами в соответствии с заданной функцией распределения вероятностей, например, равномерной по всему множеству уникальных кортежей в заданном диапазоне, причём с функцией распределения вероятностей как раз для кортежей как для декартового произведения их элементов, а не для самих элементов! Если самому ума не хватит, то в Си и Плюсах для этого есть спецбиблиотеки. ʘ‿ʘ