【问题标题】:Making random bits stored in a boolean array将随机位存储在布尔数组中
【发布时间】:2014-04-05 22:31:29
【问题描述】:

我正在寻找一种将随机位集存储到数组中的方法。下面的代码不完整,但我只想帮助理解如何随机化一组位。

public static boolean[] makeRandomBits(int size) {
    BitSet[] bitArray = new BitSet[size];
    for(int i=0; i<size; i++){
        bitArray[i].set(/*Right here is where my confusion is*/);
    }

    /*other stuff below*/
}

我正在寻找类似于以下内容的输出:01101001

【问题讨论】:

    标签: java arrays random boolean bits


    【解决方案1】:

    java.math.BigInteger 类提供了一个 constructor,它创建了一个给定 bitLenght 的随机 BigInteger,您可以在位级别进行操作

    Random r = new Random();
    int numBits = 32;
    
    BigInteger bi = new BigInteger(numBits,r); 
    

    如果你需要它是BitSet:

    BitSet bs = BitSet.valueOf(bi.toByteArray());
    

    有关更多信息,请查看 BigIntegerBitSet javadocs。

    【讨论】:

      【解决方案2】:
      Random random = new Random();
      boolean[] arr = new boolean[size];
      for (int i = 0; i < size; ++i) {
         arr[i] = random.nextBoolean();
      }
      return arr;
      

      【讨论】:

      • 如果我在寻找代码以返回像 01101001 或 11010101 这样的值,用这种方法可以吗?抱歉,我认为我在最初的问题中没有说清楚。
      • 嗯......这更容易。 (new Integer(random.nextInt(someMax))).toBinaryString()
      • 我不确定我是否关注你。在这种情况下,变量 someMax 是否会是位数,即如果 someMax 为 7,它将创建从 11111111 到 00000000 的随机位?
      • 在这种情况下, someMax 将是 2^7
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 2017-10-24
      相关资源
      最近更新 更多