如何从Java中的列表中随机选择一个整数?

时间:2013-02-19 19:01:13

标签: java random integer

这是我到目前为止所拥有的: 我的清单:

private int [] delays = {1000, 1333, 3443, 1220, 3232};

我希望有一个功能,它会在继续之前暂停一段时间:

sleep(random(delays))

我找到了字符串的解决方案但是当谈到整数时,我真的不明白它。

请有人帮我解释一下代码并解释一下吗?

我已导入随机,

我得到了:

    Random rand = new Random();
int delayIndex = rand.nextInt(delays.length);

然而它说:Random类型中的方法nextInt(int,int)不适用于参数(int)

感谢你对我的反应。

感谢您的帮助,但我正在解决的问题仍然存在:

Random类型的方法nextInt(int,int)不适用于参数(int)

我不明白为什么,我对Java完全不熟悉。

7 个答案:

答案 0 :(得分:1)

使用Java的内置Random类来选择0和数组最后一个索引之间的随机整数。

import java.util.*;

Random rnd = new Random();
int delayIndex = rnd.nextInt(delays.length);

然后访问您的数组并将该数组元素提供给Thread.sleep

答案 1 :(得分:1)

0...N生成随机值,其中N是保持持续时间的数组的大小。一旦你有了一个随机值,这是一个数组的索引,只需在从索引位置的数组中检索持续时间。

Random random = new Random();
int randomInt = random.nextInt(delays.length);
sleep(delays[randomInt]);

答案 2 :(得分:1)

Random r = new Random ();

Thread.sleep (delays [r.nextInt (delays.length)]);

答案 3 :(得分:1)

Random rnd = new Random();
int index = rnd.nextInt(delays.length);

答案 4 :(得分:1)

public int random(int[] delays){
    Random rn = new Random();
    int range = delays.length - 1;
    int pos = rn.nextInt() % range;

    return delays[pos];
}

答案 5 :(得分:1)

sleep(delays[(int)(Math.random() * 100) / 20]);

Math.random()会返回一个随机数> = 0.0且< 1.0

乘以100,转换为int,除以20 - 你现在有一个随机数0 - 4.

或者:

sleep(delays[new Random().nextInt(5)]);

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#random() http://docs.oracle.com/javase/7/docs/api/java/util/Random.html

答案 6 :(得分:0)

整数数组不是列表,数组通常具有对象的顺序存储器存储(例如,0 = 1,1 = 16,2 = 0,3 = 100) 但无论如何,这里是如何使用整数数组:

int[] delays = {1000, 1333, 3443, 1220, 3232};
Random rand = new Random();
Thread.sleep(delays[rand.nextInt(delays.length)]);

对于带有整数列表的列表,它将是这样的:

List<Integer> delays = Lists.newArrayList(1000, 1333, 3443, 1220, 3232);
int delay;
for (Iterator<Integer> iter = delays.iterator(); iter.hasNext();){
    Random rand = new Random();
    if(rand.nextInt(delays.size()) == delays.size()){
            delay = iter.next();
            break;
    }
}
Thread.sleep(delay);

你可能猜到我也是java的新手,但我希望我能提供帮助。