java生成只包含两种类型, 并且比例可配置的二维数组代码

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);
			}
		}
		
	}
	
}

猜你喜欢

转载自blog.csdn.net/SkydivingWang/article/details/84033151