之前做音樂播放器的時候需要設計播放模式,其中的隨機播放模式,雖然可以通過(int)(Math.random()*Max_Value)這種方法產生一個隨機數,可是考慮到這是音樂播放器,在隨機播放模式下,點擊播放上一曲,得到的很有可能不是之前播放的那首音樂,而是新的一個隨機數所指定的音樂,因此,我作了一些思考。大體上,能實現我的需求:
public class NRandom {
/**
* 對給定數目的自0開始步長爲1的數字序列進行亂序
*
* @param no
* 給定數目
* @return 亂序後的數組
*/
public static int[] getSequence(int no) {
int[] sequence = new int[no];
for (int i = 0; i < no; i++) {
sequence[i] = i;
}
Random random = new Random();
for (int i = 0; i < no; i++) {
int p = random.nextInt(no);
int tmp = sequence[i];
sequence[i] = sequence[p];
sequence[p] = tmp;
}
random = null;
return sequence;
}
/**
* @param array
* 被檢索的數據源
* @param key
* 檢索的數據
* @return
*/
public static int getIndex(int array[], int key) {
for (int i = 0; i < array.length; i++) {
if (array[i] == key)
return i;
}
return -1;
}
}
當使用上類的靜態方法getSequence(int)獲取一個隨即序列後,如:從1到5的隨機序列({3,4,2,1,5}或{4,5,2,3,1}或{2,5,1,4,3}等等),只用再次調用該方法纔會產生新的隨機序列。然後靜態方法getIndex(int[],int)的作用是順序查找指定值在序列中的位置,如果不存在則返回-1.
以上就是我解決隨機播放模式的關鍵類,謝謝閱讀。
轉載請註明出處:http://blog.csdn.net/bcai2/article/details/39250343。