生成稍微特殊的随机数组

如何生成一个512*512的二维随机数组,元素只有两种取值,各占一定的比例,而且这比例还可以修改

兄台java语言的是这样的, c语言类似吧

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

    }
}