如何获取特定范围内的随机数

时间:2013-08-17 00:23:52

标签: java math random int

我知道它被多次询问,但所有这些都与另一个难以理解的问题混在一起。但是我想使用Math.random在0-10中得到一个随机数。

实际上,随机数将用作列表的索引号。

到目前为止我做了什么:

int random = Math.random(0,9); // Obviously does not work 

3 个答案:

答案 0 :(得分:5)

您可以创建一个Random对象并致电nextInt以获得介于0和输入数字(不包括)之间的int

Random rnd = new Random();
int random = rnd.nextInt(11);  // returns range 0-10
  

返回一个伪随机数,在0之间均匀分布的int值   (包括)和指定值(不包括)

答案 1 :(得分:1)

请勿使用Math.random()使用Random#nextInt()代替:

int myInt=new Random().nextInt(11);

或者,根据评论,使用

Random r=new Random();
int myInt=r.nextInt(11);

并根据需要重复使用r

答案 2 :(得分:1)

要从任何java.util.List获取随机项(使用泛型),我得到:

警告:以下代码未经过测试。

package forums;

import java.util.List;
import java.util.Random;

public final class ListHelper<T>
{
    private static final Random RANDOM = new Random();

    public T getRandom(List<T> list) {
        return list.get(RANDOM.nextInt(list.size()));
    }
}

...或者您可能更喜欢非泛型解决方案,它可以是静态的,但是每次(无处不在)调用它时都需要你对getRandom的结果进行类型转换

package forums;

import java.util.List;
import java.util.Random;

public final class Lists
{
    private static final Random RANDOM = new Random();

    public static Object getRandom(List list) {
        return list.get(RANDOM.nextInt(list.size()));
    }
}

干杯。基思。

相关问题