Мне нужно сгенерировать в цикле 200 чисел и знаков, которые создадут что-то вроде этого: 1 + 1 или 20 * 1252 Есть ли способ сделать это? Я новичок в C #. Может кто поможет?

Random randonNum = new Random();
for (int i = 0; i < 200; i++)
{
    int nums = randonNum.Next(0, 500); 
    //dont know how to continue
}
0
shir121 25 Фев 2015 в 13:42

3 ответа

Лучший ответ

Что-то вроде этого

      string[] operands = new[] {"+", "-", "*", "/"};
      Random random = new Random();
      List<string> results = new List<string>();
      for (int i = 0; i < 200; i++)
      {
        int firstNum = random.Next(0, 500);
        int secondNum = random.Next(0, 500);

        string operand = operands[random.Next(0, 3)];
        results.Add(string.Format("{0}{1}{2}", firstNum, operand, secondNum));
      }
0
zaitsman 25 Фев 2015 в 10:46

Как насчет использования Random для всех трех факторов? Random можно использовать, например, для поиска оператора из списка или массива.

Вы можете использовать что-то вроде этого (где operators - это массив объектов string):

string[] operators = new string[] { "+", "-", "*" };
string oper = operators[randonNum.Next(operators.Length)];

Взгляните на этот рабочий пример:

// this list will contain the results
List<string> list = new List<string>();

// create an array of allowed operators
string[] operators = new string[] { "+", "-", "*" };

Random randonNum = new Random();
for (int i = 0; i < 200; i++)
{
    // pick two numbers
    int num1 = randonNum.Next(0, 500); 
    int num2 = randonNum.Next(0, 500); 

    // pick an operator from the array
    string oper = operators[randonNum.Next(operators.Length)];

    // add it to the list
    list.Add(string.Format("{0}{1}{2}", num1, oper, num2));
}
1
Patrick Hofman 25 Фев 2015 в 10:54

Кажется, вы знаете, как сгенерировать случайное число, поэтому создание двух случайных чисел не должно вызывать никаких проблем. Похоже, у вас возникли проблемы с генерацией случайного «знака», называемого операторами.

Вы можете сделать это, создав массив, содержащий возможные варианты выбора, сгенерировав случайный индекс для этого массива и получив этот элемент через индексатор массива, как описано в Доступ к случайному элементу в списке:

var operators = new[] { "+", "-", "/", "*" };
int operatorIndex = randomNum.Next(operators.Length);
var selectedOperator = operators[operatorIndex];
2
Community 23 Май 2017 в 11:56