美文网首页
生成随机0、1矩阵

生成随机0、1矩阵

作者: steamed_bun | 来源:发表于2017-12-05 18:02 被阅读0次

    写在前面:
           这是根据上一篇文章 用 int 来储存 boolean 数组 代码 想到的... 然后去测试了一下速度,发现确实能快一点


    一般方法:
    重复调用 random.nextInt(2);,然后保存到一个二维数组里面


    新方法:
    随机生成 int 取其 bit 位,只需随机生成(二维数组元素个数/32)个 int 数就好了

    代码:

    package com.wx.zxing.RandomIntArray;
    
    import java.util.Random;
    
    public class RandomIntArrayTest {
    
        public static void main(String[] args) {
            int LWidthNum = 20000;
            int LHeightNum = 20000;
            Random random = new Random();
            int test = 0;
            long start = System.currentTimeMillis();
            int[][] input = new int[LWidthNum][LHeightNum];
            for (int i = 0; i < input.length; i++){
                for (int j = 0; j < input[0].length; j++){
                    input[i][j] = random.nextInt(2);
                }
            }
    //        模拟使用
            for (int i = 0; i < input.length; i++){
                for (int j = 0; j < input[0].length; j++){
                    test = input[i][j];
                }
            }
            long end = System.currentTimeMillis();
            System.out.println("一般方法时间:" + (end - start));
    
            long start1 = System.currentTimeMillis();
            int length = LHeightNum * LWidthNum;
            int num = (length / 32) + 1;
            int[] temp = new int[num];
            for (int j = 0; j < num; j++){
                temp[j] = random.nextInt(Integer.MAX_VALUE);
            }
    //        模拟使用
            int size = 0;
            for (int i = 0; i < LWidthNum; i++){
                for (int j = 0; j < LHeightNum; j++){
                    test = ((temp[size / 32] & (1 << ( size & 0x1F))) != 0 ? 1 : 0);
                    size++;
                }
            }
            long end1 = System.currentTimeMillis();
            System.out.println("新方法时间:" + (end1 - start1));
        }
    }
    

    运行结果:
    结果并不是恒定的,但是基本都是新方法要快一点

    数组大小为(20000 * 20000)的运行结果.png 数组大小为(200 * 100)的运行结果.png

    新方法优缺点:
    ①、生成足够快,使用的时候也可以快速取出来
    ②、但是可视化读特别差,就是不能直观的看到数组里面的值
    ③、不能对里面的值做操作,相当于添加了只读属性   ┓( ´-` )┏

    相关文章

      网友评论

          本文标题:生成随机0、1矩阵

          本文链接:https://www.haomeiwen.com/subject/dkicixtx.html