Android 两个随机数总是以相同的数字开头
我是Android新手,所以请不要因为我问了一个愚蠢的问题就开枪。 我已经检查了“Stackoverflow”和许多其他网站,但似乎找不到正确的答案 我正在创建一个简单的数学应用程序来帮助我女儿学习数学。 当我尝试在乘法表1中创建两个随机数时,它们总是以两个相同的数字8x7开始。 但单击“提交”按钮后,我得到了“正确”的数字,这意味着第一个数字是“1”,第二个数字是介于“0”和“11”之间的数字 感谢您的帮助。 谢谢Android 两个随机数总是以相同的数字开头,android,random,Android,Random,我是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();