Java 如何在每次调用一个方法时获得大量新的随机整数?
我是android开发和java的新手,所以我写的代码不是很好,如果你有任何其他建议来完全更改我的代码,并且仍然可以达到这个目的,那么欢迎你。但现在我想知道我是否可以制作一些随机整数,并通过一种方法再次随机它们。因此,每次调用该方法时,我都会显示许多新的数字 这是我的密码Java 如何在每次调用一个方法时获得大量新的随机整数?,java,android,random,Java,Android,Random,我是android开发和java的新手,所以我写的代码不是很好,如果你有任何其他建议来完全更改我的代码,并且仍然可以达到这个目的,那么欢迎你。但现在我想知道我是否可以制作一些随机整数,并通过一种方法再次随机它们。因此,每次调用该方法时,我都会显示许多新的数字 这是我的密码 public class Randomize { //setting up random integers int one = (int) Math.floor(Math.random()*9+1); int two = (
public class Randomize {
//setting up random integers
int one = (int) Math.floor(Math.random()*9+1);
int two = (int) Math.floor(Math.random()*9+1);
int three = (int) Math.floor(Math.random()*9+1);
//making a string for displaying it as a three-digit number
String number = "" + one + two + three;
//adding them up, which will make a two-digit integer
int sum = one + two + three;
//distinguishing two-digit integer
int firstDigit = (int) Math.floor(sum / 10);
int secondDigit = (int) (sum % 10);
//adding up to create a single-digit number
int singleDigit = firstDigit + secondDigit;
//creating methods
public void refreshNumbers(){
//refresh random numbers
}
public String number(){
return number;
}
public int singleDigit(){
return singleDigit;
}
}
所以你可以看到我把它们加起来直到一个位数。现在我想在每次从另一个类调用该方法时刷新随机数
非常感谢!如果您不理解这个问题,请告诉我……我不擅长解释,java也不擅长解释:使用提供随机数的各种库或标准类之一。一种常见的方法是使用,提供从Unix epoch开始的当前时间(以毫秒为单位)作为种子
无论您是否在每个类、每个方法、每个迭代中这样做一次都无关紧要,如果您在每个迭代中这样做一次,那么假设可以足够快地检索到足够粒度的时间,那么同样的方法应该可以工作。您可以这样做吗
public void refreshNumbers(){
one = // new random number
// etc.
}
然后只需创建类的实例,获取数字,然后通过调用refreshNumbers刷新它。我假设您在调用方法时试图避免重复随机数,为什么不尝试使用SecureRandom,它比Random更好,因为它提供了一个加密功能强大的随机数生成器。请查看以下代码:
import java.util.Random;
public class Randomize {
private int one, two, three, sum, firstDigit, secondDigit, singleDigit;
private Random random = null;
private String number = null;
public Randomize(){
random = new Random();
refreshNumbers();
}
//creating methods
public void refreshNumbers(){
//setting up random integers
one = 1 + random.nextInt(9);
two = 1 + random.nextInt(9);
three = 1 + random.nextInt(9);
//adding them up, which will make a two-digit integer
sum = one + two + three;
//making a string for displaying it as a three-digit number
number = Integer.toString(sum);
//distinguishing two-digit integer
firstDigit = sum / 10;
secondDigit = sum % 10;
//adding up to create a single-digit number
singleDigit = firstDigit + secondDigit;
}
public String getNumber(){
return number;
}
public int getSingleDigit(){
return singleDigit;
}
}
它基本上做了相同的事情,但将所有逻辑移到了refreshNumbers方法中,在构造函数中启动Random的实例,并刷新其中的数字。我只将所有随机生成改为使用随机生成,将计算顺序改为重用结果,对私有变量指定访问限制,并在适当时重命名函数以get开头 +1用于使用Random,但我只创建一个Random实例,可能是一个静态类变量,因为性能更好,并且您可以调用无参数构造函数-这比将当前毫秒作为种子更容易、更好。