Android 两个随机数总是以相同的数字开头

Android 两个随机数总是以相同的数字开头,android,random,Android,Random,我是Android新手,所以请不要因为我问了一个愚蠢的问题就开枪。 我已经检查了“Stackoverflow”和许多其他网站,但似乎找不到正确的答案 我正在创建一个简单的数学应用程序来帮助我女儿学习数学。 当我尝试在乘法表1中创建两个随机数时,它们总是以两个相同的数字8x7开始。 但单击“提交”按钮后,我得到了“正确”的数字,这意味着第一个数字是“1”,第二个数字是介于“0”和“11”之间的数字 感谢您的帮助。 谢谢 你被所有测试人员的噩梦所困扰。测试一个随机数发生器。没有办法测试任何算法的随机

我是Android新手,所以请不要因为我问了一个愚蠢的问题就开枪。 我已经检查了“Stackoverflow”和许多其他网站,但似乎找不到正确的答案

我正在创建一个简单的数学应用程序来帮助我女儿学习数学。 当我尝试在乘法表1中创建两个随机数时,它们总是以两个相同的数字8x7开始。 但单击“提交”按钮后,我得到了“正确”的数字,这意味着第一个数字是“1”,第二个数字是介于“0”和“11”之间的数字

感谢您的帮助。 谢谢


你被所有测试人员的噩梦所困扰。测试一个随机数发生器。没有办法测试任何算法的随机性。我建议你生成一个更大的随机数,然后修改它,得到一个足够随机的数。样本越小,算法的随机性就越小,对此你无能为力。这是数学


希望我已经向你暗示了答案。

你可以制作一种不太干净的解决方案。检查random的值,如果它们与之前的数字相同,则再次启动random。从理论上讲,如果随机数始终相同,这可能会在一个循环中暂停一段时间。但我认为,在这个小应用程序中,应该没有问题。例如,从全局设置整数值开始:

   private int valueOneOldValue=0;
   private int valueTwoOldValue=0;
   private Random myRandom = new Random();
然后用自己的方法将所有内容分开:

   private int generateOutcome{

       int out = myRandom.nextInt(10);
       return out;
   }
然后检查它是否与之前的值相同:

   private boolean isEqual(int oldValue, int newValue){

        boolean equal=false;

     if(oldValue==newValue){
           equal=true;
     }else{
           equal=false;
     }   
    return equal;
    }
然后做剩下的事情:

  private void generateExercise(){         

    int firstValue = generateOutcome();
    int secondValue = generateOutcome();

    if(isEqual(valueOneOldValue,firstValue)==true){

     generateExercise();

    }else{

     if(isEqual(valueTwoOldValue,secondValue)==true){

        generateExercise();
      }else{

          setValues(firstValue,secondValue);
      }

    }
  }
如果一切正常,则设置您的值:

    private void setValues(int first, int second){

     int test1 = Integer.parseInt(firstNumber.getText().toString());
    int test2 = Integer.parseInt(secondNumber.getText().toString());

    solution = test1 * test2;

     firstNumber.setText(String.valueOf(first));
    secondNumber.setText(String.valueOf(second));
    int outcome = Integer.parseInt(answer.getText().toString());
    if (outcome == solution) {
        thumbs.setImageResource(R.drawable.thumbsup);
    } else {
        thumbs.setImageResource(R.drawable.thumbsdown);
    }

    answer.setText("");
    valueOneOldValue = first;
    valueTwoOldValue = second;

   }
只需点击这个按钮点击:

       generateExercise();
这只是一个想法,目前还没有经过测试。如果您认为它可以解决您的问题,但由于我现在无法测试,您对该代码有更多问题或任何错误,请告诉我。

您在这里看过吗:?
       generateExercise();