Рандомное число из изменяющегося диапазона

Кирилл412

Пользователь
Регистрация
21.11.2018
Сообщения
146
Реакции
3
Баллы
18
В шабе стоит свич на 10 вариантов выхода, выход задается рандомным числом.., в процессе работы шаба некоторые варианты нужно отсечь, как это можно реализовать, не нагромождая кубиками
 
Через код. Одним кубиком. Типо такого:
Код:
Развернуть Свернуть Копировать
int rand = Convert.ToInt32(project.Variables["rand"].Value);
for (int i = 0; i < 10; i++)
     {
           if (rand != nenujnoe_chyslo) {continue;}
           else {project.Variables["rand"].Value = Convert.ToString(rand); return 0;}
     }
Лень сейчас думать, если честно.
 
  • Спасибо
Реакции: Кирилл412
Через код. Одним кубиком. Типо такого:
Код:
Развернуть Свернуть Копировать
int rand = Convert.ToInt32(project.Variables["rand"].Value);
for (int i = 0; i < 10; i++)
     {
           if (rand != nenujnoe_chyslo) {continue;}
           else {project.Variables["rand"].Value = Convert.ToString(rand); return 0;}
     }
Лень сейчас думать, если честно.
спасибо, попробую
 
Код:
Развернуть Свернуть Копировать
string error = "Все гуд";
int rand = Convert.ToInt32(project.Variables["rand"].Value);//записываем в локальную переменную значение из переменной проекта
int nenujnoe_chyslo = Convert.ToInt32(project.Variables["nenujnoe_chyslo"].Value);//записываем в локальную переменную значение из переменной проекта
for (int i = 0; i < 10; i++)//цикл на 10 итераций
     {
           if (rand == nenujnoe_chyslo) {error = "Число плохое"; continue;}//если число, которое зарандомило равно ненужному, пропускаем итерацию
           else {error = "Все гуд"; break;}//если число подходит, то выходим из цикла и возвращаем нужное значение
     }
if (error == "Число плохое")//если нет подходящего числа
     {throw new Exception();}//кубик выходит по красному пути
return error;
Так думаю будет чуть-чуть правильней.
Самое главное тебе понять логику, что нужно сделать в коде. Сможешь сам написать под свои нужды, если разберешься.
спасибо
 
Код:
Развернуть Свернуть Копировать
string error = "Все гуд";
int rand = Convert.ToInt32(project.Variables["rand"].Value);//записываем в локальную переменную значение из переменной проекта
int nenujnoe_chyslo = Convert.ToInt32(project.Variables["nenujnoe_chyslo"].Value);//записываем в локальную переменную значение из переменной проекта
for (int i = 0; i < 10; i++)//цикл на 10 итераций
     {
           if (rand == nenujnoe_chyslo) {error = "Число плохое"; continue;}//если число, которое зарандомило равно ненужному, пропускаем итерацию
           else {error = "Все гуд"; break;}//если число подходит, то выходим из цикла и возвращаем нужное значение
     }
if (error == "Число плохое")//если нет подходящего числа
     {throw new Exception();}//кубик выходит по красному пути
return error;
Так думаю будет чуть-чуть правильней.
Самое главное тебе понять логику, что нужно сделать в коде. Сможешь сам написать под свои нужды, если разберешься.
Только, если я правильно понимаю, не силен в c#, этим кодом будет возвращать первое нужное число.., а надо чтоб из оставшихся тож рандомно брал... если конечно я код правильно понимаю )))
 
Я, наверное, пьяный. Зачем то впихнул цикл, когда он не нужен.
Код:
Развернуть Свернуть Копировать
int rand = Convert.ToInt32(project.Variables["rand"].Value);//записываем в локальную переменную значение из переменной проекта
int nenujnoe_chyslo = Convert.ToInt32(project.Variables["nenujnoe_chyslo"].Value);//записываем в локальную переменную значение из переменной проекта

if (rand == nenujnoe_chyslo)//если число, которое зарандомило равно ненужному
    {
        throw new Exception()//то выходим из блока по красной ветке
    }
else {return 0;}//если число подходит, то выходим из блока по зеленой ветке
 
Только, если я правильно понимаю, не силен в c#, этим кодом будет возвращать первое нужное число.., а надо чтоб из оставшихся тож рандомно брал... если конечно я код правильно понимаю )))
Если хочешь, скинь шаб тестовый (в лс, или как) и я напишу тебе код, а то это ни к чему не приведет.
 
  • Спасибо
Реакции: Кирилл412
а для чего else, return, если не по красной то он и так выйдет по зелёной т.к. там никакой проверки нет
 
Если хочешь, скинь шаб тестовый (в лс, или как) и я напишу тебе код, а то это ни к чему не приведет.
ну интересующий кусок, это рандомное число от 1 до 11, и свич на 10 выходов по этим числам.. в процессе, допустим, по третей и седьмой ветке выходить больше не надо, а по оставшимся восьми так же рандомно продолжить
 
Я, наверное, пьяный. Зачем то впихнул цикл, когда он не нужен.
Код:
Развернуть Свернуть Копировать
int rand = Convert.ToInt32(project.Variables["rand"].Value);//записываем в локальную переменную значение из переменной проекта
int nenujnoe_chyslo = Convert.ToInt32(project.Variables["nenujnoe_chyslo"].Value);//записываем в локальную переменную значение из переменной проекта

if (rand == nenujnoe_chyslo)//если число, которое зарандомило равно ненужному
    {
        throw new Exception()//то выходим из блока по красной ветке
    }
else {return 0;}//если число подходит, то выходим из блока по зеленой ветке
Спасибо, думаю так будет работать .. не посмотреть пока
 
Спасибо, думаю так будет работать .. не посмотреть пока
Лови
Код:
Развернуть Свернуть Копировать
Random rand = new Random();//создаем команду для рандома
int rand_chys;//рандомим от 1 до 10
int nenujnoe_chyslo;//создаем переменную для ненужного числа
string error;//переменная для проверки совпадения

do
    {
        rand_chys = rand.Next(1, 11);//рандомим от 1 до 10
        error = "Good";//переменная для проверки совпадения
        for (int i = 0; i < project.Lists["Ненужные варианты"].Count; i++)//цикл с итерациями по количеству строк в списке
            {
                nenujnoe_chyslo = Convert.ToInt32(project.Lists["Ненужные варианты"][i]);//берем из списка по индексу ненужное число
                if (rand_chys == nenujnoe_chyslo)//если число, которое зарандомило равно ненужному
                    {
                        error = "Bad";//плохое число
                        break;
                    }         
            }
    }
while (error != "Good");

project.Variables["chys"].Value = Convert.ToString(rand_chys);
return rand_chys;
В список заносишь ненужные варианты (можно к файлу привязать).
Рандомит до тех пор, пока не возмет нужный тебе вариант. Если я тебя првильно понял.
P.S. Если нужно единожды зарандомить, то меняешь break; на throw new Exception();. И кубик уйдет по красной ветке
 

Вложения

  • Test.xmlz
    Test.xmlz
    13,1 KB · Просмотры: 135
Последнее редактирование:
  • Спасибо
Реакции: Кирилл412
Лови
Код:
Развернуть Свернуть Копировать
Random rand = new Random();//создаем команду для рандома
int rand_chys;//рандомим от 1 до 10
int nenujnoe_chyslo;//создаем переменную для ненужного числа
string error;//переменная для проверки совпадения

do
    {
        rand_chys = rand.Next(1, 11);//рандомим от 1 до 10
        error = "Good";//переменная для проверки совпадения
        for (int i = 0; i < project.Lists["Ненужные варианты"].Count; i++)//цикл с итерациями по количеству строк в списке
            {
                nenujnoe_chyslo = Convert.ToInt32(project.Lists["Ненужные варианты"][i]);//берем из списка по индексу ненужное число
                if (rand_chys == nenujnoe_chyslo)//если число, которое зарандомило равно ненужному
                    {
                        error = "Bad";//плохое число
                        break;
                    }       
            }
    }
while (error != "Good");

project.Variables["chys"].Value = Convert.ToString(rand_chys);
return rand_chys;
В список заносишь ненужные варианты (можно к файлу привязать).
Рандомит до тех пор, пока не возмет нужный тебе вариант. Если я тебя првильно понял.
P.S. Если нужно единожды зарандомить, то меняешь break; на throw new Exception();. И кубик уйдет по красной ветке
Спасибо, очень помогли, только если ненужные варики убрать из списка, код с ошибкой идет
 
Последнее редактирование:
Спасибо, очень помогли, только если ненужные варики убрать из списка, код с ошибкой идет
Удаляйте полностью строку, а не значение в ней. Через клавишу Del. Значения для проверки должны быть числовые, без пробелов и т.п.
 
  • Спасибо
Реакции: Кирилл412

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