Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2012, 20:36   #1
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию получить случайное число в соответствии с заполненным одномерным массивом (Delphi)

Вечер добрый. Опять вопрос из разряда можно ли и как.
Имеется одномерный массив с i=от 1 до 1000. Он заполнен 0 и 1(привязано к индексу!).
Нужно получить рандомно цифру от 1 до 1000, НО что бы в нашем одномерном массиве соответствовал ноль этой цифре как индексу.
Короче.
s[5]=1
RandomRange(1,1000) не должен включать в себя 5.
Собственно написать легко в функции, там цикл, рандомный выбор и проверка условия.

Останавливает меня только то, что в массиве(1..1000) может быть только один ноль. И сколько же оно будет считать пока подберёт...
Может существует спец функция по такому поводу? Или как ещё сделать?
Буду очень рад помощи.
Artsiom вне форума Ответить с цитированием
Старый 10.09.2012, 21:05   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Эм, ни понимаю это :
Цитата:
Он заполнен 0 и 1(привязано к индексу!)
и это :
Цитата:
НО что бы в нашем одномерном массиве соответствовал ноль этой цифре как индексу.
Было бы хорошо если бы Вы показали простой наглядный пример, базируясь на котором можно было бы создать алгоритм.
Poma][a вне форума Ответить с цитированием
Старый 10.09.2012, 21:12   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 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
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.09.2012, 21:31   #4
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Было бы хорошо если бы Вы показали простой наглядный пример, базируясь на котором можно было бы создать алгоритм.
s[1]=1
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.
Цитата:
Сформируйте на основе данного массива новый, который будет содержать только подходящие номера, и делайте рандом от него.
Спасибо!
Artsiom вне форума Ответить с цитированием
Старый 11.09.2012, 14:55   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Artsiom
Имеется одномерный массив с i=от 1 до 1000. Он заполнен 0 и 1(привязано к индексу!).

Останавливает меня только то, что в массиве(1..1000) может быть только один ноль.
а Вам не кажется, что эти два утверждения противоречивы? Или у Вас массив заполняется по правилу - элементы с чётным индексом - нули, с нечётным - единицы, но тогда там ноль явно не один, либо правила заполнения вашего одномерного массива S какие-то другие?...


p.s. если правила формирования одномерного массива не такие элементарные - то совет от BDA отлично подойдёт!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.09.2012, 15:15   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

телепатия подсказывает человеку нужна выборка с исключением.

выбрали, поставили 1 (и дальше это число не выбирать).

в этом случае можно использовать алгоритм перемешивания.
заполнили массив данными по порядку, перемешали их.
(например взяв два случайных индекса и поменяв данные местами и так много-много раз)
И далее выборка по порядку из хаотически расположенных данных.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с одномерным массивом в С++ 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