0

我知道它被问了很多次,但所有这些都与其他问题混合在一起,这使得它难以理解。但是我想使用 Math.random 来获得 0-10 的随机数。

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

到目前为止我做了什么:

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

3 回答 3

5

您可以创建一个Random对象并调用nextInt以获取int0 和输入的数字(不包括)之间的值。

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

返回介于 0(包括)和指定值(不包括)之间的伪随机、均匀分布的 int 值

于 2013-08-17T00:26:18.063 回答
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()));
    }
}

干杯。基思。

于 2013-08-17T01:02:05.477 回答
1

不要使用Math.random()UseRandom#nextInt()代替:

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

或者,根据评论,使用

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

r并根据需要重复使用。

于 2013-08-17T00:25:14.877 回答