随机的nextInt()工作不正常,更好的方法来获取随机数?

Nul*_*ion -1 java random android

我需要在两个整数之间得到一个随机数.我正在使用此功能来获取它:

     public int randInt(int min, int max) {
        Random rand = new Random();
        int randomNum = rand.nextInt((max - min) + 1) + min;
        return randomNum;
     }
Run Code Online (Sandbox Code Playgroud)

问题是,有时功能不正常,因为它给我的差异很小的数字链,例如,我用min 0和max 1000调用函数,有时我在链中得到这些值:500,500,502,500,500,500,520,530,503,500,500,501等......

有时功能正常,我得到的差异很大,例如,1,20,500,200,444,850,664等......

所以...我需要一个总是返回真实随机数的函数,有时候......

有更好的方法来实现这一目标吗?随机的最小值和最大值?

谢谢

Ell*_*sch 6

不要Random在每次调用时重新初始化,SecureRandom如果你想要更"安全"的随机性,你可以使用它.

private static Random rand = new SecureRandom();
public int randInt(int min, int max) {
    // Random rand = new Random();
    int randomNum = rand.nextInt((max - min) + 1) + min;
    return randomNum;
 }
Run Code Online (Sandbox Code Playgroud)