-2

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

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)

4

7 回答 7

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

Math.random() returns a random number >= 0.0 and < 1.0

Multiply by 100, convert to int, and divide by 20 - you now have a random number 0 - 4.

Or:

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

于 2013-02-19T19:15:58.640 回答
1

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

import java.util.*;

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

然后访问您的数组并将该数组元素输入Thread.sleep.

于 2013-02-19T19:03:20.223 回答
1

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

Random random = new Random();
int randomInt = random.nextInt(delays.length);
sleep(delays[randomInt]);
于 2013-02-19T19:03:27.627 回答
1
Random r = new Random ();

Thread.sleep (delays [r.nextInt (delays.length)]);
于 2013-02-19T19:03:36.143 回答
1
Random rnd = new Random();
int index = rnd.nextInt(delays.length);
于 2013-02-19T19:05:11.763 回答
1
public int random(int[] delays){
    Random rn = new Random();
    int range = delays.length - 1;
    int pos = rn.nextInt() % range;

    return delays[pos];
}
于 2013-02-19T19:06:47.650 回答
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 新手,但我希望我能提供帮助。

于 2014-02-17T13:22:14.207 回答