创建随机的4字节数字



我需要在Java中生成随机的4字节长度的数字。

我想到了这个:

Random rnd = new Random();
int i = 0;
while((i=rnd.nextInt()) < 0x1000000){}
return i;

其中0x1000000-是3字节的值,int是根据JLS的4字节。

有什么更好的解决方案吗?

UPD:是的,我所说的"4字节长度"数字是指具有MSB(最高有效字节(的4字节数字

"4字节长度的数字"是一个有点不正确的混淆规范。你是说一个均匀分布在0 2^32-1范围内的随机数(适合4字节-无符号(?rnd.nextInt()怎么样?

如果假设最高有效字节不等于0,但其他字节线性分布,那么类似的东西应该起作用:

 Random rnd = new Random();
 int result = (rnd.nextInt(0xFF) + 1) << 8*3;
 result += rnd.nextInf(0x1000000);

如果该值可以取任何数字,那么正如其他人所指出的,存在Random.nextBytes或Random.netInt(然而,我对文档的理解是,它可以返回包括0在内的任何值(。

这个数字的用途是什么?如果您生成密钥,那么通常第一位应该是1(并使用SecureRandom(,而且可能,除非您是世界级的密码学家,否则您不应该编写算法,而应该使用(最好是高级(库。

最新更新