java随机。nextInt()正在返回相同的数字
我的代码如下,我已经尝试使用随机类和数学。Random()方法。它在第一次呼叫时工作正常,但是当我在应用程序中单击“重试”按钮后尝试重播随机猜测游戏时,返回的号码相同
重试按钮调用TryAgain()
package com.example.austin.higherorlower;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.view.View;
import 安卓.widget.Button;
import 安卓.widget.EditText;
import 安卓.widget.Toast;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
int randNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button tryAgain = findViewById(R.id.tryAgainButton);
randNumber = returnRand();
}
public int returnRand(){
Random rand = new Random();
int randInt = rand.nextInt(20) + 1;
Button tryAgain = findViewById(R.id.tryAgainButton);
tryAgain.setVisibility(View.GONE);
return randInt;
}
public void GuessRandom(View view) {
EditText numberGuessedEdit = findViewById(R.id.guessedRandomValue);
String numberGuessedString = numberGuessedEdit.getText().toString();
int numberGuessed = Integer.parseInt(numberGuessedString);
if (numberGuessed < randNumber) {
Toast.makeText(getApplicationContext(), "Higher", Toast.LENGTH_SHORT).show();
}
else if(numberGuessed > randNumber) {
Toast.makeText(getApplicationContext(), "Lower", Toast.LENGTH_SHORT).show();
}
else if(numberGuessed == randNumber){
Toast.makeText(getApplicationContext(), "Correct! Try Again!", Toast.LENGTH_SHORT).show();
Button tryAgain = findViewById(R.id.tryAgainButton);
tryAgain.setVisibility(View.VISIBLE);
}
}
public void TryAgain(View view){
returnRand();
}
}
# 1 楼答案
您是否尝试过导入数学类并调用
Math.random()
?它返回一个介于0.0和1.0之间的浮点数,您可以使用Math.floor(20*Math.random()) +1
获得一个介于1和20之间的随机数(它将是一个保存为浮点数的整数)# 2 楼答案
我不认为使用随机对象有什么不对;然而,Elliott Frisch可能是对的,简单地在无参数构造函数中构造Random可能会一次又一次地使用相同的种子。我所知道的是,这不是它在Java世界中的工作方式(请参阅Random上的javadocs,这是非常彻底的),但是当您在Android中工作时,所有的赌注都没有了
你可以尝试用几种不同的方法来调整它。你可以:
# 3 楼答案
如果你在随机课上遇到问题,我建议你使用数学课。 我发现一个很好的函数可以帮助你
# 4 楼答案
这里不要使用} 可以作为替代品使用。像
Random
,在循环中重新创建Random
将拾取相同的种子,这将使它完全不是随机的。幸运的是,有^{