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

Mr-Grey

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

Нам необходимо перебирать циклы рандомно до тех пор пока счетчик не увеличится до нужного значения. Как только цикл завершится- исключить его из списка и перебирать остальные.
Когда завершаться все циклы, то завершить шаблон.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Не понятно. Как на счёт примеров?
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
делайте сначала рандом от 0 до 3, отправляйте действие в нужном направлении, увеличивайте там счетчик и выполняйте действия.
Перед тем, как выполнять действие, проверяете, не достиг ли счетчик нужного значения. Если достиг - возвращаетесь на генерацию.
После того, как счетчик достигает значения, увеличиваете еще один счетчик на единицу. Этот счетчик будет считать, сколько счетчиков уже достигло условия.
Перед генерацией сравниваете - если этот, последний, счетчик равен 3, завершаете задание, если нет - идёте работать дальше.
 
  • Спасибо
Реакции: samsonnn

Mr-Grey

Client
Регистрация
03.02.2016
Сообщения
88
Благодарностей
6
Баллы
8
Не понятно. Как на счёт примеров?
Цикл первый
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, завершаете задание, если нет - идёте работать дальше.
Понимать примерно понимаю а вот до конца никак не укладывается в голове.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
И вкаждом цикле какой-то свой набор действий? И нужно, чтобы эти циклы отрабатывали в разном порядке?
 

Mr-Grey

Client
Регистрация
03.02.2016
Сообщения
88
Благодарностей
6
Баллы
8
И вкаждом цикле какой-то свой набор действий? И нужно, чтобы эти циклы отрабатывали в разном порядке?
Ну действия там да- будут разные. Но это не важно наверно. Возьмем просто увеличение на единицу как пример.
Да, в рандомном пока циклы не исчерпают себя.
 
  • Спасибо
Реакции: ZennoCool

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Вынесите установку счетчиков в начало.
А дальше так же, как я уже говорил.

Добавьте генерацию чисел и свитч, который будет вести на нужный набор действий
 
  • Спасибо
Реакции: samsonnn

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
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

ZennoCool

Новичок
Регистрация
23.03.2015
Сообщения
3
Благодарностей
0
Баллы
1
Ну действия там да- будут разные. Но это не важно наверно. Возьмем просто увеличение на единицу как пример.
Да, в рандомном пока циклы не исчерпают себя.
Конечно, это как вариант :-)
 

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