14 / 13 / 2
Регистрация: 31.08.2011
Сообщений: 506
|
||||||
1 | ||||||
Генерация случайных чисел без повторений03.09.2019, 20:04. Показов 4225. Ответов 19
Метки нет (Все метки)
Код создает случайные числа без повторений
И он их создает, но в самом конце дописывает одно и тоже число " 1634588 ". Как это убрать?
0
|
03.09.2019, 20:04 | |
Ответы с готовыми решениями:
19
Генерация случайных чисел Генерирование случайных чисел без Random Массив без повторений Случайные числа без повторений |
14 / 13 / 2
Регистрация: 31.08.2011
Сообщений: 506
|
|
03.09.2019, 20:17 [ТС] | 3 |
этот то выброшу, а другого нет.
А с этим мне долго разбираться придется.
0
|
Злостный нарушитель
9684 / 5245 / 1197
Регистрация: 12.03.2015
Сообщений: 24,719
|
|
03.09.2019, 20:29 | 4 |
Ну так напиши его. Это и есть прикладное программирование.
Лучше день потерять потом за пять минут долететь. © Кликните здесь для просмотра всего текста
1
|
14 / 13 / 2
Регистрация: 31.08.2011
Сообщений: 506
|
|
03.09.2019, 20:33 [ТС] | 5 |
А почему все таки в конце пишет это число? И откуда оно берется?
0
|
Модератор
3758 / 2262 / 784
Регистрация: 15.11.2015
Сообщений: 9,004
|
|
03.09.2019, 21:35 | 7 |
Из не инициализорованного элемента массива под номером 20. В последнем цикле надо считать до n-1.
Этот метод получения уникального случайного числа годится только в одном случае - если уже есть набор чисел, который нельзя менять и в который надо добавить уникальное случайное число. Для остальных случаев уже посоветовали, как правильно сделать массив неповторяющихся случайных чисел.
1
|
Модератор
|
||||||
04.09.2019, 04:56 | 8 | |||||
3
|
3048 / 1668 / 656
Регистрация: 19.03.2019
Сообщений: 5,376
|
||||||
04.09.2019, 09:56 | 9 | |||||
кстати, от предложенного тут Раздача карт при игре в дурака, количество игроков задается с клавиатуры варианта перемешивания результат будет отличаться?
Добавлено через 6 минут я имею в виду будет ли отличие от такого варианта
1
|
14 / 13 / 2
Регистрация: 31.08.2011
Сообщений: 506
|
|
04.09.2019, 10:35 [ТС] | 10 |
Спасибо, а как выводить в memo только нужное количество чисел? Не первые допустим 20 чисел брать из StringList, а тоже
в случайном порядке вывести из 230 только 20 чисел
0
|
3048 / 1668 / 656
Регистрация: 19.03.2019
Сообщений: 5,376
|
||||||
04.09.2019, 10:49 | 11 | |||||
все числа в StringList уже перемешаны.
Вот и бери нужное число чисел. вместо
1
|
14 / 13 / 2
Регистрация: 31.08.2011
Сообщений: 506
|
|
04.09.2019, 11:15 [ТС] | 12 |
mr-Crocodile, Спасибо!
0
|
3048 / 1668 / 656
Регистрация: 19.03.2019
Сообщений: 5,376
|
|
04.09.2019, 11:19 | 13 |
не за что.
кстати, если нужно, то легко сделать так, чтобы первый раз нажал на кнопку - в мемо попали первые случайные 20 чисел, второй раз нажал - следующие 20 чисел (без повторов) и т.д., пока числа в StringList не закончатся. для этого достаточно сделать StringList глобальным, заполнять и мешать в TForm1.FormCreate() + завести глобальную переменную, чтобы знать, какие числа брать в очередной раз. тебе это надо? код написать?
0
|
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
|
|
04.09.2019, 11:24 | 14 |
Автор темы, скорее всего у тебя просто не инициализирована переменная была. пробовал бы через отладку и наблюдателя посмотреть, что делается с переменными, потом бы и установил где ошибка. хотя я всё делал проще, когда у меня отладка нормально не работала, я просто назначал label ту или иную переменную, выстраивал их в ряд и смотреть пошагово, что изменяется и на сколько. Хотя данный метод решения подойдёт только, когда переменных до 20, потому что в вашем случае массив.
1
|
14 / 13 / 2
Регистрация: 31.08.2011
Сообщений: 506
|
|
04.09.2019, 11:40 [ТС] | 15 |
0
|
Модератор
|
||||||
04.09.2019, 11:54 | 16 | |||||
По сути, метод Exchange класса TStringList примерно так и работает:
Classes.pas
1
|
3048 / 1668 / 656
Регистрация: 19.03.2019
Сообщений: 5,376
|
|
04.09.2019, 12:09 | 17 |
Простите, Вы не поняли вопрос.
Вы получаете номер, c каким элементом поменять i-й элемента массива через RandomRange(0, N) а специалисты рекомендую для обмена выбирать элемент из оставшихся (из тех, что больше i) (посмотрите по ссылке выше, там упоминается статья, где это рассматривается с точки зрения распределения после перемешивания). Т.о. предложенный второй вариант лучше.
0
|
3048 / 1668 / 656
Регистрация: 19.03.2019
Сообщений: 5,376
|
|
04.09.2019, 14:52 | 19 |
Да, тут я с Вами согласен. в 99.999% для "домашнего использования" - как не перемешай, так и хорошо будет!
0
|
Модератор
|
|
04.09.2019, 16:14 | 20 |
Не по теме: Главное - пропорции соблюсти, как Д.М. Менделеев доказал (40/60)
1
|
04.09.2019, 16:14 | |
04.09.2019, 16:14 | |
Помогаю со студенческими работами здесь
20
Случайные числа без повторений Заполнение массива случайными числами без повторений Вывести все гласные латинские буквы без повторений Генерация случайных чисел без повторений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации
В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
|
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
|
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
|
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
|
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
|
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
|
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
|
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
|
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
|
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
|
Как сбросить локальный репозиторий до состояния удалённого репозитория Git
bytestream 21.01.2025
При разработке программного обеспечения с использованием системы контроля версий Git разработчики часто сталкиваются с необходимостью синхронизации локального и удаленного репозиториев. Данная задача. . .
|
Как запретить подсветку выделенного текста с помощью CSS
bytestream 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения.
Выделение текста может. . .
|