美文网首页
生成随机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矩阵

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

  • python必知必会6

    Python中生成随机整数、随机小数、0—1之间小数方法 生成随机整数使用random.randint()生成随机...

  • Python模块---random随机结果获取

    random随机结果获取 生成[0, 1)之间浮点数 随机生成给定区间整数 随机生成区间的偶数 随机生成区间的浮点...

  • python中生成随机整数,随机小数,0-1之间的小数

    1.生成随机整数 2.生成0-1之间随机的小数 3.生成随机小数,randn(3)代表生成三个

  • 8-random

    1. 生成0 - 1 之间的随机小数 2. 生成其他的随机小数 3. 生成整数 4. 种子 每次运行脚本生成的随机...

  • Python常见面试题(二)

    python生成随机函数 random模块 random.random()随机生成0-1之间的数字 random....

  • iOS中的生成随机数方法

    生成0-x之间的随机正整数 intvalue=arc4random_uniform(x + 1); 生成随机正整数...

  • ios开发生成随机数

    生成0-x之间的随机正整数 intvalue=arc4random_uniform(x + 1); 生成随机正整数...

  • Random

    生成0~100之间的随机数 生成[0,1]之间均匀分布的随机数 产生任意范围的随机数(范围:[m,n]) [m,n...

  • java实现6位随机数

    //生成六位随机数 System.out.println(Math.random()); //生成0-1的随机数...

网友评论

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

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