相关疑难解决方法(0)

如何在Java中生成随机BigInteger值?

我需要生成0(包括)到n(不包括)范围内的任意大的随机整数.我最初的想法是调用nextDouble并乘以n,但是一旦n大于2 53,结果将不再均匀分布.

BigInteger 有以下构造函数可用:

public BigInteger(int numBits, Random rnd)
Run Code Online (Sandbox Code Playgroud)

构造一个随机生成的BigInteger,均匀分布在0到(2 numBits - 1)的范围内,包括0和(2 numBits - 1).

如何使用它来获得0到n范围内的随机值,其中n不是2的幂?

java random biginteger

62
推荐指数
3
解决办法
6万
查看次数

具有给定长度的Java随机数

我需要在Java中使用正好6位的随机数进行生成.我知道我可以在一个随机数上循环6次但是在标准Java SE中有没有其他方法可以做到这一点?

编辑 - 跟进问题:

现在,我可以生成我的6位数,我遇到了一个新问题,我正在尝试创建的整个ID是语法123456-A1B45.那么我如何随机化最后5个可以是AZ或0-9的字符?我正在考虑使用char值和randomice一个介于48 - 90之间的数字,并简单地删除任何获得代表58-64的数字的值.这是要走的路还是有更好的解决方案?

编辑2:

这是我的最终解决方案.谢谢你所有的帮助!

protected String createRandomRegistryId(String handleId)
{
    // syntax we would like to generate is DIA123456-A1B34      
    String val = "DI";      

    // char (1), random A-Z
    int ranChar = 65 + (new Random()).nextInt(90-65);
    char ch = (char)ranChar;        
    val += ch;      

    // numbers (6), random 0-9
    Random r = new Random();
    int numbers = 100000 + (int)(r.nextFloat() * 899900);
    val += String.valueOf(numbers);

    val += "-";
    // char or numbers (5), random 0-9 A-Z
    for(int …
Run Code Online (Sandbox Code Playgroud)

java random

36
推荐指数
4
解决办法
14万
查看次数

标签 统计

java ×2

random ×2

biginteger ×1