java生成只包含兩種型別, 並且比例可配置的二維陣列程式碼
阿新 • • 發佈:2018-12-09
import java.util.ArrayList; import java.util.List; import java.util.Random; public class Generate2Array { public static void main(String[] args) { /* * 陣列維度宣告 */ int px = 20; int py = 10; /* * 按照比例生成一個集合 */ double percent = 0.2; int count = px * py; List<Integer> l = new ArrayList<>(); for(int i =0; i<(count * percent); i++) { l.add(0); } for (int i = 0; i < count*(1-percent); i++) { l.add(1); } /* * 打亂順序 */ exchange(l); /* * 賦值到陣列中 */ Integer[][] s = new Integer[px][py]; for (int i = 0; i < count; i++) { int index1 = i/py; int index2 = i%py; s[index1][index2] = l.get(i); } /* * 統計資訊, 列印輸出驗證結果 */ int countx = 0; int county = 0; for (int i = 0; i < s.length; i++) { for (int j = 0; j < s[i].length; j++) { if(s[i][j].intValue() == 0) { countx++; } else if (s[i][j].intValue() == 1) { county++; } System.out.print(s[i][j] + " "); } System.out.println(); } System.out.println("0個數" + countx + ", 1個數:" + county); } /** * 隨機化 * @param l */ private static void exchange(List<Integer> l) { if(l == null || l.isEmpty()) return; Random r = new Random(); for (int i = 0; i < l.size(); i++) { int j = r.nextInt(l.size()); if(j != i) { Integer temp = l.get(j); l.set(j, l.get(i)); l.set(i, temp); } } } }