如何将java.util.random转换为int

如何将java.util.random转换为int,java,random,Java,Random,我将java.util.random与种子一起使用(新的random(System.currentTimeMillis()) 我需要将其转换为int(我的业务逻辑) 我尝试使用.nextInt(),但没有帮助 //我的业务逻辑——下面的代码处于循环中,旨在 每次生成不同的随机数// 预期输出:每次以int格式生成的新随机数 实际产量: -使用nextInt()时,每次生成的数字都相同 -如果不转换为Int,我将无法使用“Random” 上面显示的带有my int变量的数据类型不要在每次生成D

我将java.util.random与种子一起使用(新的random(System.currentTimeMillis())

  • 我需要将其转换为int(我的业务逻辑)
  • 我尝试使用.nextInt(),但没有帮助
//我的业务逻辑——下面的代码处于循环中,旨在 每次生成不同的随机数//

预期输出:每次以int格式生成的新随机数

实际产量: -使用nextInt()时,每次生成的数字都相同 -如果不转换为Int,我将无法使用“Random”

上面显示的带有my int变量的数据类型

不要在每次生成Double时创建Random的新实例

您可以创建一个实例,然后在需要新的double时调用它

Random rand=new Random(System.currentTimeMillis());
//循环从这里开始
double randomNumber=Math.floor(inputParam1*rand.nextDouble());
//如果您想要一个看起来最大为inputParam1的整数,可以执行以下操作:
int randomInt=(int)randomNumber;

你也可以按照别人的建议使用
Math.random()

我不知道你为什么要将它转换为int

双随机数=新随机数(System.currentTimeMillis()).nextDouble();
这将给出一个介于0和1之间的随机双精度数,将下面的代码转换为int没有意义

Math.floor(inputParam1 * (new Random(System.currentTimeMillis())).nextDouble()))
请检查这个答案

以上链接中最重要的部分:

如果你想让你的随机序列在两次跑步之间保持一致,你可以 指定一个种子


发布一个完整的最小问题,重现该问题。准确地说出您期望的输出,以及您得到的输出。为什么要为此创建一个新的
Random
Math.Random()
提供从0到1的双精度。为什么在将双精度转换为整数后再将其分配给双精度???取决于单循环的速度,System.currentTimeMillis()可能会回答相同的值,在这种情况下,nextDouble返回的值将是相同的。我将切换到以纳秒为单位获取时间,更重要的是,只创建一次随机实例并重新使用它。请提供预期的输入和输出。提供建议可能更容易。但是,Math.Random()总是给出一个从0到1的双精度数,所以你得到的是双精度数。@BenjaminUrquhart:对于Math.random,当它运行到大约10000次迭代时,它往往会重复,这就是为什么我想到使用util.random根据上面的一个输入更改纳秒,并使用你的建议声明一次并称之为多次times.将使您保持更新更新上面的更新代码,我本想强制转换为int。混淆是因为使用了Math.random()并强制转换为Double earlier inputParam1的值是多少?它将是一个两位数的int值(例如:56,72等)int random number=(int)Math.floor(inputParam1*(新的random(System.currentTimeMillis()).nextInt());感谢您上面的InputUpdate代码,我本想将其转换为int。混淆是因为之前使用了Math.random()和casting来加倍。将查看链接文章,尝试上面建议的一些输入,
Math.floor(inputParam1 * (new Random(System.currentTimeMillis())).nextDouble()))