// ReturnArray.java public class ReturnArray { static String[] cities = { "Tokyo", "Kyoto", "Osaka", "Hiroshima" }; static String[] citySet(int n) { n = Math.abs(n) % (cities.length + 1); String[] results = new String[n]; int[] picks = new int[n]; for(int i = 0; i < picks.length; i++) picks[i] = -1; for(int i = 0; i < picks.length; i++) { retry: while(true) { int t = (int)(Math.random() * cities.length); for(int j = 0; j < i; j++) if(picks[j] == t) continue retry; picks[i] = t; results[i] = cities[t]; break; } } return results; } public static void main(String[] args) { for(int i = 0; i < cities.length; i++) { System.out.println( "citySet(" + i + ") = "); String[] cl = citySet(cities.length); for(int j = 0; j < cl.length; j++) System.out.println("\t" + cl[j]); } } }実行結果は次のようになる.
% java ReturnArray citySet(0) = Kyoto Tokyo Hiroshima Osaka citySet(1) = Tokyo Kyoto Osaka Hiroshima citySet(2) = Tokyo Kyoto Hiroshima Osaka citySet(3) = Hiroshima Kyoto Tokyo Osaka