private Random rng = new Random();
double random = rng.nextDouble(1.5-0.5) + 0.5;
因为我想50%和150%之间产生的数。但它会引发一个错误。如何使用随机函数获得该范围内的数字?
private Random rng = new Random();
double random = rng.nextDouble(1.5-0.5) + 0.5;
因为我想50%和150%之间产生的数。但它会引发一个错误。如何使用随机函数获得该范围内的数字?
您的问题是:您应该阅读javadoc。含义:不要假定某些库方法做某事;相反:请阅读文档以验证您的假设是正确的。
在这种情况下,检查了Double.nextDouble ...并找到:
返回下一个伪,从这个随机数生成器的序列中均匀分布的0.0和1.0之间的double值。
问题是:有没有方法nextDouble()需要一个双参数!只有一个没有任何争论;并且该方法默认返回0和1之间的值。
因此,只需更改您的代码即可在没有任何参数的情况下调用该方法!
你可以做这样的事情50%和100%
public static void main(final String[] args) {
Random rng = new Random();
double random = rng.nextDouble();
if (random <= 0.5) {
System.out.println("50% " + random);
} else {
System.out.println("100% " + random);
}
}
这是因为nextDouble
不接收参数,只返回在0.0和1.0之间的双。使用以下命令:
Random rng = new Random();
double max = 1.5;
double min = 0.5;
double random = rng.nextDouble(); // Double between 0.0 and 1.0
double percentage = random*(max-min) + min;
System.out.println(percentage);
如果您在IDE中读取错误或只是看Java文档,你会看到清晰的原因...
方法nextDouble()的类型随机是不适用于 参数(双)
随机类没有这样的方法nextDouble()
,需要一个双作为参数
BTW你为什么不只是产生50和150之间的随机整数...这将让你的愿望实现更有意义......
像
“它抛出我错误“不是有用的描述。请在您的问题中包含异常堆栈跟踪! – GhostCat
如果你修复了错误,它可能会起作用。 – Kayaman
欢迎来到Stack Overflow!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –