生成1000到13之间的随机数

时间:2014-04-25 21:52:20

标签: java random

我试图在13到100之间生成1000个随机数。到目前为止,它只产生了我想要重复一千次的75%。这就是我到目前为止所拥有的:

Random rand = new Random();
for (int j = 0; j < 1000; j++)
{
    int pick = rand.nextInt((87) + 13);
    pick++;
}

为什么它不起作用?

4 个答案:

答案 0 :(得分:4)

注意nextInt()覆盖0 包含和指定值完全!因此,必须rand.nextInt(88)才能使生成的最高int为87.这是您想要的:

Random rand = new Random();
for (int j = 0; j<1000; j++)
{
    int pick = rand.nextInt(88)+13;
}

答案 1 :(得分:1)

rand.nextInt(88) + 13;应该为您提供13到100之间的数字,然后将它放在循环中。

答案 2 :(得分:0)

该行:

  

到目前为止,它只能产生我想要重复一千次的75%

真的不加我。这可能是你正在播种的问题。确保始终使用时间重新播种随机数。

但我同意阿卜杜勒的意见,你需要从括号中取出+13

rand.nextInt(87) + 13;

因为rand.nextInt((87) + 13)rand.nextInt((67) + 23)的{​​{1}}相同,所以

但是如果你想要更多“真实”的随机性,那就看看一个叫做buzzhash的东西(虽然那是用于散列的;但是可以为数字修改)

答案 3 :(得分:0)

我在我的代码中使用了这个:

public static int randomInteger(int min, int max)
{
    java.security.SecureRandom rand = new java.security.SecureRandom();

    //get bounded [0, max) from nextInt()
    int randomNum = rand.nextInt(max) + min;

    return randomNum;
}

value = randomInteger(13,100); //13..99
value = randomInteger(13,101); //13..100