2015-03-04 3 views
0

Я хочу генерировать случайные математические выражения в c# как.Есть ли способ генерации случайных математических выражений в C#?

2*3-6   
2(85+96)*12-96  
78/8-9 
... etc 

, пожалуйста, помогите мне в этом.

+1

Вы должны быть более строгими. Какими правилами должны следовать выражения (какие операции?, Сколько оперантов ?, какой диапазон - значения?, Целые числа?) И что вы считаете случайным? Вы хотите равномерно распределить одно выражение из набора всех разрешенных выражений? Или это просто «смотреть случайно»? –

ответ

3

Там не в C# нет GetMeRandomMathExpression (или любой другой язык, насколько я знаю), но вы могли бы генерировать случайные выражения вроде этого:

  • Поместите все операнды в switch case

  • Использование случайного решить сколько операндов в вашем выражении я называю это K.

  • Используйте случайные K раз и случай переключателя на первом шаге, чтобы найти все операнды случайным образом.

  • Использовать случайный K+1 раз, чтобы найти K + 1 номер, который вам нужен в вашей формуле.

как 462*823-61-263+518*490*479+851+276+13-208-418-537+486+476+15*227-274 является случайным выражением, которое я произвожу с моим простым кодом:

using System; 
using System.Text; 

public class Test 
{ 
    public static void Main() 
    { 
     Random r = new Random(); 
     StringBuilder builder= new StringBuilder(); 


     int numOfOperand = r.Next(1, 20); // it is just a test so I just want to have up to 20 operands. 
     int randomNumber; 
     for(int i = 0 ; i<numOfOperand ; i++){ 

      randomNumber = r.Next(1, 1000); 
      builder.Append(randomNumber); 


      int randomOperand = r.Next(1, 4); 

      string operand = null; 

      switch (randomOperand) 
      { 
       case 1: 
        operand = "+"; 
       break; 
       case 2: 
        operand = "-"; 
       break; 
       case 3: 
        operand = "*"; 
       break; 
       case 4: 
        operand = "/"; 
       break; 
      } 
      builder.Append(operand); 
     } 
     randomNumber = r.Next(1, 1000); 
      builder.Append(randomNumber); 

     Console.WriteLine(builder.ToString()); 
    } 
} 

Вы можете найти в Интернете версия here