Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在每次调用一个方法时获得大量新的随机整数?_Java_Android_Random - Fatal编程技术网

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 = (

我是android开发和java的新手,所以我写的代码不是很好,如果你有任何其他建议来完全更改我的代码,并且仍然可以达到这个目的,那么欢迎你。但现在我想知道我是否可以制作一些随机整数,并通过一种方法再次随机它们。因此,每次调用该方法时,我都会显示许多新的数字

这是我的密码

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实例,可能是一个静态类变量,因为性能更好,并且您可以调用无参数构造函数-这比将当前毫秒作为种子更容易、更好。