代码之家  ›  专栏  ›  技术社区  ›  mj1261829

如何在java中生成所有可能的64位随机值?

  •  2
  • mj1261829  · 技术社区  · 6 年前

    Java是否 SecureRandom.nextLong() 返回所有可能的值,前提是它继承自 Random 哪一个只使用48位?如果没有,我还能用Java来做吗?也许可以通过修改Random类来做,怎么做?我只想使用一个全随机的长数生成器,如果可能的话,可以返回所有可能的长值。

    1 回复  |  直到 6 年前
        1
  •  7
  •   Boris the Spider    6 年前

    虽然SecureRandom继承自Random,但它不使用相同的数学或具有相同的限制。它最终将产生所有可能的64位值。

    这个类提供了一个加密的强随机数生成器(RNG)。

    这个类委托给许多可能的实现之一。你可以打电话选择一个 SecureRandom.getInstance(algorithm)

    注意:有些实现使用计算机中的熵使结果随机,而不是纯粹的伪随机。

    它使用s 48位算法

    SecureRandom不使用其父级的任何方法,例如。

    /**
     * The provider implementation.
     */
    private SecureRandomSpi secureRandomSpi = null;
    
    public void nextBytes(byte[] bytes) {
        secureRandomSpi.engineNextBytes(bytes);
    }
    

    此方法委托给完全不同的实现。

    相关链接 How to solve slow Java `SecureRandom`? 由于使用/dev/random

    推荐文章