随机生成方程的算法

时间:2016-10-10 13:18:09

标签: java android algorithm random

我目前正在Android Studio中开展一个学校项目。 我想写一个算法,它生成随机方程,而不仅仅是随机数,而是实际的方程,如30 + 48-18。 我在考虑以下步骤:

  1. 生成一个随机数,表示间隔为1到3的操作量。(我已经写完了那段代码:

    Random rand1 = new Random();
    int operation = rand1.nextInt(2)+1;
    String StringOperation = String.valueOf(operation);
    
  2. 然后为每个操作随机选择哪个操作(+, - ,*,/)。我正在努力编写这一步的代码......

  3. 最后一步是随机生成将出现在实际等式中的实际数字。这意味着您需要(操作量)等式+1。编写代码并不难。

  4. 如果有人能帮助我完成第2步,这对我很有帮助,因为我正在努力为这一步编写代码。我已经尝试了一些东西,但它们都没有用。

    如果有任何不清楚的地方,请写下来以便澄清问题:)

    提前谢谢你!

2 个答案:

答案 0 :(得分:0)

对于第2步,您可以将操作存储在数组中。然后你可以使用下面的函数来获得随机操作

public static int getRandom(char[] array) {
int rnd = new Random().nextInt(array.length);
return array[rnd];
}

或者,您也可以在生成1到4之间的随机数后使用switch语句。

答案 1 :(得分:0)

  

然后为每个操作随机选择哪个操作(+, - ,*,/)。我正努力为这一步编写代码......

在您的有限操作集{+, - ,*,/}中,您如何随机选择操作作为人类?你会通过查看他们的位置来随机挑选吗? 所以提示是随机选择范围(0,3)中的位置,并使用随机位置作为索引来获得操作。

尝试此操作而无需进一步阅读。

String[] operationSet = new String[]{"+", "-", "/", "*"};

public void testGenerateRandomEquations() {

    Random random = new Random();
    int numOfOperations = random.nextInt(2) + 1;

    List<String> operations = new ArrayList<>();

    for (int i = 0; i < numOfOperations; i++) {
        String operation = operationSet[random.nextInt(3)];
        operations.add(operation);
    }

    int numOfNumbers = numOfOperations + 1;
    List<Integer> numbers = new ArrayList<>();

    for (int i = 0; i < numOfNumbers; i++) {
        int number = random.nextInt(Integer.MAX_VALUE) - random.nextInt(Integer.MAX_VALUE);
        numbers.add(number);
    }
    //Now you've the list of random numbers and operations. You can further randomize
    //by randomly choosing the number and operation from those list.
}