java+生产+7位随机数_在Java中生成10位唯一的随机数

本文探讨了在Java中生成10位唯一正整数时遇到的问题,包括生成负数和不足10位数的情况。通过提供修正后的代码,展示了如何确保生成的随机数在1000000000到9999999999之间且不重复,适用于生产环境中生成约5000个唯一编号的需求。
摘要由CSDN通过智能技术生成

我正在尝试使用下面的代码来生成10位唯一的随机数。根据我的要求,我必须创建大约5000个唯一编号。这无法正常工作。它还会生成-

ve数字。同样,有时生成的数字中缺少一两位数字,导致8或9个数字而不是10。

public static synchronized List generateRandomPin(){

int START =1000000000;

//int END = Integer.parseInt("9999999999");

//long END = Integer.parseInt("9999999999");

long END = 9999999999L;

Random random = new Random();

for (int idx = 1; idx <= 3000; ++idx){

createRandomInteger(START, END, random);

}

return null;

}

private static void createRandomInteger(int aStart, long aEnd, Random aRandom){

if ( aStart > aEnd ) {

throw new IllegalArgumentException("Start cannot exceed End.");

}

//get the range, casting to long to avoid overflow problems

long range = (long)aEnd - (long)aStart + 1;

logger.info("range>>>>>>>>>>>"+range);

// compute a fraction of the range, 0 <= frac < range

long fraction = (long)(range * aRandom.nextDouble());

logger.info("fraction>>>>>>>>>>>>>>>>>>>>"+fraction);

int randomNumber = (int)(fraction + aStart);

logger.info("Generated : " + randomNumber);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值