Перебор циклов в рандоме

  • Автор темы Автор темы Mr-Grey
  • Дата начала Дата начала

Mr-Grey

Client
Регистрация
03.02.2016
Сообщения
88
Реакции
6
Баллы
8
Приветствую.
Задача стоит простая.
Есть три цикла. первый цил увеличивает счетчик до 10.
Второй цикл до 7, предположим.
Третий до 4.

Нам необходимо перебирать циклы рандомно до тех пор пока счетчик не увеличится до нужного значения. Как только цикл завершится- исключить его из списка и перебирать остальные.
Когда завершаться все циклы, то завершить шаблон.
 
делайте сначала рандом от 0 до 3, отправляйте действие в нужном направлении, увеличивайте там счетчик и выполняйте действия.
Перед тем, как выполнять действие, проверяете, не достиг ли счетчик нужного значения. Если достиг - возвращаетесь на генерацию.
После того, как счетчик достигает значения, увеличиваете еще один счетчик на единицу. Этот счетчик будет считать, сколько счетчиков уже достигло условия.
Перед генерацией сравниваете - если этот, последний, счетчик равен 3, завершаете задание, если нет - идёте работать дальше.
 
  • Оценить
Реакции: samsonnn
Не понятно. Как на счёт примеров?
Цикл первый
for (int i=0;i<10;i++)

{

p++;

}

Цикл второй
for (int t=0;t<7;t++)

{

u++;

}

Цикл первый
for (int j=0;j<4;j++)

{

o++;

}

как и говорил все просто. перебираем все три из них в рандомном порядке пока каждый из них не завершиться. После чего завершаем работу всего шаблона.
делайте сначала рандом от 0 до 3, отправляйте действие в нужном направлении, увеличивайте там счетчик и выполняйте действия.
Перед тем, как выполнять действие, проверяете, не достиг ли счетчик нужного значения. Если достиг - возвращаетесь на генерацию.
После того, как счетчик достигает значения, увеличиваете еще один счетчик на единицу. Этот счетчик будет считать, сколько счетчиков уже достигло условия.
Перед генерацией сравниваете - если этот, последний, счетчик равен 3, завершаете задание, если нет - идёте работать дальше.
Понимать примерно понимаю а вот до конца никак не укладывается в голове.
 
И вкаждом цикле какой-то свой набор действий? И нужно, чтобы эти циклы отрабатывали в разном порядке?
Ну действия там да- будут разные. Но это не важно наверно. Возьмем просто увеличение на единицу как пример.
Да, в рандомном пока циклы не исчерпают себя.
 
  • Оценить
Реакции: ZennoCool
Вынесите установку счетчиков в начало.
А дальше так же, как я уже говорил.

Добавьте генерацию чисел и свитч, который будет вести на нужный набор действий
 
  • Оценить
Реакции: samsonnn
C#:
Развернуть Свернуть Копировать
List<int> num = new List<int>() { 0, 1, 2 };
Random rnd = new Random();

while (num.Count > 0)
{
    int r = rnd.Next(num.Count);
    if (num[r] == 0)
    {
        for (int i = 0; i < 10; i++)
        {
            // Какие-то действия
        }
    }
    if (num[r] == 1)
    {
        for (int t = 0; t < 7; t++)
        {
            // Какие-то действия
        }
    }
    if (num[r] == 2)
    {
        for (int j = 0; j < 4; j++)
        {
            // Какие-то действия
        }
    }
    num.RemoveAt(r);
}
 
  • Оценить
Реакции: Valiksim
Ну действия там да- будут разные. Но это не важно наверно. Возьмем просто увеличение на единицу как пример.
Да, в рандомном пока циклы не исчерпают себя.
Конечно, это как вариант :-)
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)