Форум программистов, компьютерный форум CyberForum.ru

Извлечь элемент из массива рандомным индексом - C++

Восстановить пароль Регистрация
 
Funny.Furry
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 33
18.10.2012, 00:35     Извлечь элемент из массива рандомным индексом #1
Привет. Есть массив, задача в том, чтобы извлечь из массива элемент рандомным индексом, но чтобы позже не допустить получение этого же индекса или элемента. Принцип карточной колоды. Подскажите, каким образом это можно реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 00:35     Извлечь элемент из массива рандомным индексом
Посмотрите здесь:

Поменять значение элемента массива с индексом массива C++
C++ Вставить в вектор новый элемент перед элементом с заданным индексом
C++ Добавить после элемента массива с заданным индексом элемент со значением 100
C++ Извлечь элемент из вектора
C++ найти максимальный элемент массива x(15) . переставить местами этот максимальный элемент с индексом 4
Многопутевое слияние. Пропускается элемент с индексом 1 C++
C++ Заменить каждый неположительный элемент массива Х абсолютной величиной элемента массива Y с тем же индексом
Из заданного массива удалить элемент с указанным индексом C++
Убрать те строки матрицы, в которых ни один элемент не является взаимно простым со своим индексом C++
Замените минимальный элемент массива его удвоенным индексом C++
C++ Если элемент массива с четным индексом меньше предыдущего - поменять их местами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1442 / 656 / 87
Регистрация: 03.06.2009
Сообщений: 3,347
Завершенные тесты: 1
18.10.2012, 09:19     Извлечь элемент из массива рандомным индексом #2
Завести второй массив индексов, в котором отмечать взятые из первого массива элементы. При очередном извлечении из первого массива проверять извлечен ли данный элемент во втором и продолжать эту проверку пока не найдется еще не извлеченный элемент.
igorrr37
 Аватар для igorrr37
1599 / 1227 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
18.10.2012, 09:48     Извлечь элемент из массива рандомным индексом #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main()
{
    int arr[] = {1,2,3,4,5};
    size_t const size = sizeof(arr) / sizeof(*arr);
    srand(time(0));
    bool arrAux[size] = {false}; // нужен для отслеживания выпадавших индексов
    for(int i = size, indRaw; i >= 1; --i)
    {
        indRaw = rand() % i; // вычисляем индекс(сырой) элемента
        for(int ind = 0, counter = -1; ; ++ind) // вычисляем фактический индекс ind двигаясь по массиву arrAux и увеличиваем counter если натыкаемся на ячейку со значением false
        {
            if(!arrAux[ind] && (++counter == indRaw))
            {
                std::cout << arr[ind] << "  ";
                arrAux[ind] = true; // помечаем что этот индекс уже выпал
                break;
            }
        }
    }
    return 0;
}
а вообще есть ф-ция std::random_shuffle
Yandex
Объявления
18.10.2012, 09:48     Извлечь элемент из массива рандомным индексом
Ответ Создать тему
Опции темы

Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru