有一個長度為 100 的字元陣列,初始內容全為波浪線(~)。需隨機選取 5 個不重複的位置,將其替換為加號(+)。這是典型的「隨機抽樣替換」問題。
import java.util.Random;
import java.util.HashSet;
import java.util.Set;
public class ArrayRandomReplace {
public static void main(String[] args) {
char[] arr = new char[100];
// 初始化為 '~'
for (int i = 0; i < arr.length; i++) {
arr[i] = '~';
}
Random rand = new Random();
Set indices = new HashSet<>();
// 生成 5 個不重複隨機索引
while (indices.size() < 5) {
indices.add(rand.nextInt(100)); // 0-99
}
// 執行替換
for (int idx : indices) {
arr[idx] = '+';
}
// 輸出驗證
System.out.println(new String(arr));
}
}
若需替換為多種字元、或按權重隨機選取,可引入 `ThreadLocalRandom`(多線程環境)或 `Collections.shuffle` 打亂索引列表後取前 N 個。