【问题标题】:Is there any way to generate random mathematical expressions in c#?有没有办法在c#中生成随机数学表达式?
【发布时间】:2015-05-05 02:08:22
【问题描述】:

我想在c#中生成随机数学表达式。

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

请帮帮我。

【问题讨论】:

  • 您需要更加严格。表达式应该遵循什么规则(什么操作?,多少个操作?,值的范围是多少?,仅限整数?)你认为什么是随机的?您想从所有允许的表达式集中随机均匀地绘制一个表达式吗?还是应该只是“看起来很随意”?

标签: c# algorithm random mathematical-expressions


【解决方案1】:

C#(或据我所知的任何语言)中没有 GetMeRandomMathExpression,但您可以生成如下随机表达式:

  • 将所有操作数放入switch case

  • 使用随机数来决定表达式中有多少个操作数我将其命名为K

  • 在第一步中使用随机的K次数和switch case来随机查找所有的操作数。

  • 使用随机的K+1 次在公式中找到您需要的 K+1 个数字。

like 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多