2016-11-13 78 views
-6

我有:代50%和150%之间的随机数

private Random rng = new Random(); 

double random = rng.nextDouble(1.5-0.5) + 0.5; 

因为我想50%和150%之间产生的数。但它会引发一个错误。如何使用随机函数获得该范围内的数字?

+2

“它抛出我错误“不是有用的描述。请在您的问题中包含异常堆栈跟踪! – GhostCat

+0

如果你修复了错误,它可能会起作用。 – Kayaman

+0

欢迎来到Stack Overflow!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –

回答

1

您的问题是:您应该阅读javadoc。含义:不要假定某些库方法做某事;相反:请阅读文档以验证您的假设是正确的。

在这种情况下,检查了Double.nextDouble ...并找到:

返回下一个伪,从这个随机数生成器的序列中均匀分布的0.0和1.0之间的double值。

问题是:有没有方法nextDouble()需要一个双参数!只有一个没有任何争论;并且该方法默认返回0和1之间的值。

因此,只需更改您的代码即可在没有任何参数的情况下调用该方法!

-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); 
    } 
} 
1

这是因为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); 
1

如果您在IDE中读取错误或只是看Java文档,你会看到清晰的原因...

方法nextDouble()的类型随机是不适用于 参数(双)

随机类没有这样的方法nextDouble(),需要一个双作为参数

BTW你为什么不只是产生50和150之间的随机整数...这将让你的愿望实现更有意义......