建 立 一 個 存 放 著 min~MAX 範 圍 所 有 數 字 的 陣 列 , 利 用 交 換 浮 上 的 方 法 取 得 不 重 複 亂 數 數 列 。
例 子 : 取 範 圍 1~10 長 度 3 的 亂 數 數 列 ,
|
以 上 的 方 法 很 方 便 , 但 如 果 要 寫 成 一 個 method , 總 不 能 返 回 整 個 a 陣 列 , 因 此 實 作 寫 代 碼 時 有 點 差 異 。
// 返 回 m 個 亂 數 , 範 圍 是 0 到 n-1 public static short[] kShuffle(short m, short n) { // 存 放 亂 數 的 陣 列 short[] number = new short[m]; // 存 放 0 到 n-1 的 數 字 short[] set = new short[n]; for (short i = 0; i < n; i++) { set[i] = i; } Random rand = new Random(); for (short i = 0; i < m; i++) { // 只 取 i 到 n-1 的 亂 數 short x = (short) (rand.nextInt(n - i) + i); number[i] = set[x]; // 算 法 要 swap,實 際 可 省 略 // short temp = set[x]; set[x] = set[i]; // set[i] = temp; } return number; } |
沒有留言:
發佈留言