2013-02-19 24 views
-1

這是我到目前爲止有: 我的列表:如何從Java中的列表中隨機選擇一個整數?

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

我想有一個功能,它會睡了一會兒,然後再繼續:字符串

sleep(random(delays)) 

我已經找到了解決方案然而,當涉及到整數我不真正理解它。

請有人可以幫助我的代碼並解釋它嗎?

我已經導入了隨機,

我:

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

但是它說:在類型隨機的方法nextInt(INT,INT)不適用於參數(INT)

感謝您的支持。

我感謝你的幫助,但是我很歌廳問題仍然存在的:

在類型的方法nextInt(INT,INT)隨機不適用於參數(INT)

我不明白爲什麼,我完全陌生的Java如此裸露與我。

+0

你想從'延遲'數組中隨機選擇一個整數嗎? – 2013-02-19 19:03:07

+2

你確定你沒有意外地用逗號「,」而不是「。」來輸入「(延遲,長度)」嗎? – rgettman 2013-02-19 19:08:46

+0

是的,我相信我沒有使用逗號..和是的帕維爾試圖隨機選擇。 – Echoe 2013-02-19 19:15:22

回答

1

使用Java的內置Random類來選擇0到數組最後一個索引之間的隨機整數。

import java.util.*; 

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

然後訪問您的數組並將該數組元素饋入Thread.sleep

+0

ahhh所以它的delays.length,我使用的是delays.getSize():S讓我檢查一下! 2分鐘,謝謝! 哦,是啊,這是我得到的問題:Random類型的nextInt(int,int)方法不適用於參數(int) – Echoe 2013-02-19 19:04:19

+0

是的,它是一個數組,因此使用delays.length。 – rgettman 2013-02-19 19:05:12

1

0...N生成一個隨機值,其中N是保存持續時間的數組大小。一旦你有了這個隨機值,它是數組的一個索引,只需在該索引位置從數組中檢索持續時間的睡眠。

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

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

我仍然得到錯誤:Random類型的nextInt(int,int)方法不適用於參數(int) – Echoe 2013-02-19 19:16:26

+0

@Echoe請確保您的「Random」實際上是java.util.Random。 – 2013-02-19 19:18:01

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

在你的情況下,'index'將從'-delays.length + 1'到'delays.length-1'包含在內,即它可以是負數。 – 2013-02-19 19:27:03

+1

@MikhailVladimirov謝謝,忘了Java給mod的負面結果。 – NominSim 2013-02-19 19:43:59

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

    return delays[pos]; 
} 
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

+0

謝謝你,這似乎有我的問題解決..我感謝您的幫助!任何想法似乎是nextInt事情的問題? – Echoe 2013-02-19 19:18:17

+0

'Random.nextInt()'接受一個參數;一個'int'。它實際上是唯一的上限。你會得到一個介於零和那個數字之間的數字。 – 2013-02-19 19:21:00

+0

如果您收到您聲明的消息,則您正在導入一些奇怪的東西,而不是'java.util.Random'。 – 2013-02-19 19:24:48

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,但我希望我可以幫助。

相關問題