![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.07.2012
Сообщений: 357
|
![]()
Вечер добрый. Опять вопрос из разряда можно ли и как.
Имеется одномерный массив с i=от 1 до 1000. Он заполнен 0 и 1(привязано к индексу!). Нужно получить рандомно цифру от 1 до 1000, НО что бы в нашем одномерном массиве соответствовал ноль этой цифре как индексу. Короче. s[5]=1 RandomRange(1,1000) не должен включать в себя 5. Собственно написать легко в функции, там цикл, рандомный выбор и проверка условия. Останавливает меня только то, что в массиве(1..1000) может быть только один ноль. И сколько же оно будет считать пока подберёт... Может существует спец функция по такому поводу? Или как ещё сделать? Буду очень рад помощи. |
![]() |
![]() |
![]() |
#2 | ||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Эм, ни понимаю это :
Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Сформируйте на основе данного массива новый, который будет содержать только подходящие номера, и делайте рандом от него. Например:
1 2 3 4 5 6 7 8 9 (позиция) 1 0 0 1 1 1 1 1 0 (данные) Преобразуем в: 1 2 3 (позиция) 2 3 9 (число) И рандом от 3
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#4 | ||
Форумчанин
Регистрация: 13.07.2012
Сообщений: 357
|
![]() Цитата:
s[2]=0 s[3]=1 s[4]=0 ... s[1000]=0 RandomRange(1,1000)= 3. Не подходит, т.к. s[3]=1. RandomRange(1,1000)= 1000. Подходит, т.к. s[1000]=0. Цитата:
|
||
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
p.s. если правила формирования одномерного массива не такие элементарные - то совет от BDA отлично подойдёт! |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
телепатия подсказывает человеку нужна выборка с исключением.
выбрали, поставили 1 (и дальше это число не выбирать). в этом случае можно использовать алгоритм перемешивания. заполнили массив данными по порядку, перемешали их. (например взяв два случайных индекса и поменяв данные местами и так много-много раз) И далее выборка по порядку из хаотически расположенных данных.
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с одномерным массивом в С++ | Sergei1 | Помощь студентам | 1 | 10.01.2012 11:25 |
как получить случайное число до 1 млн | HelenSecuriter | Общие вопросы C/C++ | 18 | 06.07.2011 00:16 |
Программа с одномерным массивом! | swatsam | Общие вопросы C/C++ | 24 | 12.01.2011 19:47 |
Программа с одномерным массивом | Novi_ | Помощь студентам | 1 | 17.12.2010 17:37 |
Задача с одномерным массивом. | Malyshka | Помощь студентам | 6 | 13.12.2010 00:23 |