12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
||||||
1 | ||||||
Генерирование уникальных случайных чисел заданной суммы07.04.2019, 18:27. Показов 8209. Ответов 20
Метки нет (Все метки)
Здорова ребят, есть такой код, которые генерирует уникальные числа, необходимо что сгенерированные числа, т.е их сумма была равна переменной numbers, закицлился на этот моменте.
0
|
07.04.2019, 18:27 | |
Ответы с готовыми решениями:
20
Генерирование случайных чисел в заданном диапазоне с последующим нахождением их суммы Генерирование случайных чисел и выборка значения из этих чисел Rand(), генерирование случайных чисел в заданном интервале Генерация уникальных случайных чисел |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,715
|
|
07.04.2019, 18:38 | 2 |
Это что-то слишком мудрено.
Генерите просто size-1 чисел, а в arr[size-1] запишите разность между number и суммой всех остальных. Не по теме: зачем под number память выделяете динамически?
1
|
9 / 8 / 3
Регистрация: 09.05.2018
Сообщений: 23
|
||||||
07.04.2019, 18:39 | 3 | |||||
Я возможно что-то не понял... Но вроде бы так вот работает:
0
|
Just Do It!
|
|
07.04.2019, 18:53 | 4 |
вы правильно поняли zss )
Но если, по коду автора проинженерить задачу, то вот: Генерируются массив из 5 случайных уникальных чисел от 1 до 50. Этот массив будет считаться true-настоящим, если сумма элементов этого массива будет равна переменной *numbers.
1
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
07.04.2019, 20:05 [ТС] | 5 |
попробуем щас
Добавлено через 11 минут можете код дать? у меня что-то не получается ) не совсем понял
0
|
9 / 8 / 3
Регистрация: 09.05.2018
Сообщений: 23
|
||||||
07.04.2019, 21:05 | 6 | |||||
XLAT, Окей, понял, нужно несколько чисел, сумма которых...
names1995, Сейчас попробую написать код Добавлено через 5 минут Окей... Можно вот так. Только распределение будет не очень равномерным.
1
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
07.04.2019, 21:08 [ТС] | 7 |
да, получается неравномерное распределение, теряется уникальность
0
|
9 / 8 / 3
Регистрация: 09.05.2018
Сообщений: 23
|
||||||
07.04.2019, 21:13 | 8 | |||||
А вот здесь всё равномерно, только сложность O(number):
0
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
||||||
07.04.2019, 21:18 [ТС] | 9 | |||||
спасибо, но в данном решение опять таки не наблюдается уникальность, все пять чисел должны быть уникальны, и вопрос как понять эту строчку, думаю достаточно туда добавить проверку на уникальность в эту часть кода
0
|
9 / 8 / 3
Регистрация: 09.05.2018
Сообщений: 23
|
|
07.04.2019, 21:21 | 10 |
Ах... Уникальность!!! А я и забыл! А "rand()%N" надо понимать как случайное число принадлежащее интервалу [0; N), ++i - я думаю объяснять не надо
1
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
07.04.2019, 21:25 [ТС] | 11 |
да, строчку догнал, но уникальность
0
|
9 / 8 / 3
Регистрация: 09.05.2018
Сообщений: 23
|
||||||
07.04.2019, 21:28 | 12 | |||||
Этот вариант лучше, т.к. сложность его - O(N). А уникальность... надо подумать
1
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
07.04.2019, 21:41 [ТС] | 13 |
в моем коде уникальность была, но сумма не была равна заданной сумме
0
|
Just Do It!
|
||||||
10.04.2019, 10:41 | 14 | |||||
Сообщение было отмечено names1995 как решение
Решение
names1995,
1
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
18.04.2019, 18:28 [ТС] | 15 |
Ругается на это
Ошибка C4596 resize: недопустимое полное имя в объявлении члена Susya v2 c:\users\drm\source\repos\susya v2\susya v2\susya v2.cpp 49
1
|
Just Do It!
|
|||||||||||
18.04.2019, 21:28 | 16 | ||||||||||
Сообщение было отмечено names1995 как решение
Решение
вот это:
реализацию я в последний момент закинул в класс, чтобы не распылять по файлам такую мелкую структуру. Добавлено через 3 минут пофиксил, как показал выше и проверил теперь на TDM-GCC4.9.2, все работает.
1
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
18.04.2019, 21:32 [ТС] | 17 |
XLAT, все заработало, просто пока не совсем сильно разобрался в ооп, теперь у меня стоит другой вопрос, вот у нас щас генерируется числа несколько раз, и эти массивы, т.е новая генерация может совпадать с первой, надо сделать так что бы, новый массив который генерериутеся не совподал, т.е они тоже должны быть уникальны, и сгенерировать надо максимально возможную комбинацию чисел.
надеюсь внятно объяснил
0
|
Just Do It!
|
|
18.04.2019, 22:25 | 18 |
максимально возможное количество уникальных массивов уникальных случайных чисел согласно заданному критерию?
количество уникальных массивов можно вычислить аналитически. Возможно имеющийся ресурс железа(конкретно это память) не позволит получить сразу весь такой список. ooп это просто! данные и методы которые работают с этим данными инкапсулируются в одной структуре(классе) + важная часть такой структуры это начальная инициализации подходящим из имеющихся конструктором при создании объекта этой структуры.
0
|
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
|
|
18.04.2019, 22:33 [ТС] | 19 |
XLAT, l
да, именно.
Также у тебя в коде бесконечное количество выходит этих массивов. переделываю цикл на 10 итераций, допустим, но почему это не заработало)
0
|
Just Do It!
|
|||||||||||
18.04.2019, 22:58 | 20 | ||||||||||
Сообщение было отмечено names1995 как решение
Решение
потому что все 10 ваших итераций были провалены, т.е. не удовлетворили Критерий Суммы!
посмотрите номера итераций которые удовлетворяют критерию. на первой секунде то что можно поймать в консоле 94733 номер итерации самый верхний. но щас сделаю для 10 успешных. вот:
Добавлено через 7 минут попробуйте вот тут дефолтные входные данные:
0
|
18.04.2019, 22:58 | |
18.04.2019, 22:58 | |
Помогаю со студенческими работами здесь
20
Генерирование случайных чисел Генерирование случайных чисел Генерирование вещественных случайных чисел Генерирование случайных чисел double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |