每次调用方法时如何获得大量的随机整数?

时间:2014-05-25 14:23:40

标签: java android random

我是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上都没有:)

4 个答案:

答案 0 :(得分:0)

使用提供随机数的各种库或标准类之一。一种常见的方法是使用http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#Random(long),将当前时间(以Unix纪元为单位的毫秒数)作为种子。

无论每个类,每个方法执行一次,每次迭代都无关紧要,假设足够精细的时间可以足够快地检索(例如,如果每次迭代执行一次),则应该使用相同的方法。

答案 1 :(得分:0)

你能做这样的事吗?

public void refreshNumbers(){
    one = // new random number
    // etc.
}

然后只需创建一个类的实例,获取数字,然后通过调用refreshNumbers()刷新它。

答案 2 :(得分:0)

我假设您在调用方法时试图避免重复随机数,为什么不尝试使用优于Random的SecureRandom,因为它提供了加密强大的随机数生成器。

答案 3 :(得分:0)

看看这段代码:

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实例,并刷新了那里的数字。我只改变了所有随机生成而改为使用Random,移动计算的顺序以重用结果,对私有变量指定访问限制并重命名函数以" get"在适当的时候。