![]() |
|
|
![]()
|
|
| ZIFIR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Как из массива mas[]={1,2,3...} выбрать случайное число (random) и записать в переменную.
|
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: нет Всего: 11 |
Это сообщение отредактировал(а) DeadSoul - 8.3.2006, 01:12 -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| ZIFIR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Спасибо за ответ. Работает даже так: num = random(sizeof(mas)/sizeof(mas[0]));
Но только я не могу понять как это происходит. Если не трудно объясните. И закроем тему. |
|||
|
||||
| BreakPointMAN |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Тебе нужно выбрать случайное число из массива, для этого тебе нужно обратиться к элементу массива со случайным индексом. То есть, задача сводится к генерированию случайного числа, которое может быть использовано в качестве индекса массива (значит, оно должно лежать в пределах от 0 до размерности массива), и дальнейшему обращению к элементу масссива с заданным индексом. Если массив определен следующим образом:
или
...то его размерность можно определить с помощью операции sizeof: "sizeof(array)" вернет кол-во байт, занимаемое всем массивом, а "sizeof(array[0])" вернет кол-во байт, занимаемое одним элементом массива. Следовательно, поделив первое на второе, получим размерность массива. Надо отметить, что таким образом нельзя определить размерность массива, созданного динамически:
...ибо array здесь - это переменная типа int*, т.е. указатель, и sizeof, примененная к нему, вернет размер не выделенной области памяти операцией new, а размер, занимаемый самим указателем (например, 4 байта). Вариант DeadSoul:
Функция rand() вернет псевдослучайное число в диапазоне от 0 до RAND_MAX. Операция взятия остатка от целочисленного деления "%", примененная к этому числу со вторым аргументом, равным размерности массива, даст целое значение, лежащее в пределах от 0 (включая 0) до размерности массива (не включая число, равное размерности массива). Таким образом, ты получишь свой случайный индекс. Это сообщение отредактировал(а) BreakPointMAN - 8.3.2006, 02:44 -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
||||||||||
|
|||||||||||
| BreakPointMAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Твой вариант:
Функция random вернет опять-таки индекс, который ты затем должен будешь использовать при обращении к массиву, ибо параметр этой функции - число, являющееся верхней границей диапазона генерируемых чисел, нижняя - 0. Таким образом, потом, как получил индекс, обращаешься через него к элементу массива:
-------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
||||
|
|||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |