我在数组中有2个字符串。我希望选择一个的机会为10%,选择另一个的机会为90%。现在我正在使用:
Random random = new Random();
int x = random.nextInt(100 - 1) + 1;
if (x < 10) {
string = stringArray(0);
} else {
string = stringArray(1);
}
这是完成此任务的最佳方法还是有更好的方法?
答案 0 :(得分:3)
我知道在不提交代码的情况下提交堆栈溢出响应通常是一个坏主意,但我确实对“ 最佳方式”这一问题提出了质疑。人们一直在问这个问题,尽管在软件中已经建立了值得一提的设计模式,但这个问题几乎总是可以用“取决于”来回答。
例如,您的模式看起来不错(我可能会添加一些注释)。通过使用1-10而不是1-100,您可能会获得微不足道的性能提升,但是您需要问自己的事情如下:
(显然)我处于堆栈溢出的一个很小的阵营,它并不总是相信解决代码问题的通用“最佳方法”。请记住,编程仅与您要解决的问题一样困难。
编辑 自从有人问起,我就会这样:
/*
* @author DaveCat
* @version 1.0
* @since 2019-03-9
* Convenience method that calculates 90% odds of A and 10% odds of B.
*
*/
public static String[] calculatesNinetyPercent()
{
Random random = new Random();
int x = random.nextInt(10 - 1 ) + 1
//Option A
if(x <= 9) {
return stringArray(0);
}
else
{
//Option B
return stringArray(1);
}
}
顺便说一句,初级开发人员在企业级开发中常犯的错误之一是过多的注释。这有一个javadoc,可能会过分地杀了我,但我假设这是您在更大范围内使用的一种便捷方法程序。
(再次)编辑
你们一直让我感到困惑。 This is how you randomly generate between 2 given numbers in Java
答案 1 :(得分:0)
一种选择是使用一个介于0..1之间的随机浮点值,并将其与事件的可能性进行比较。如果随机值小于概率,则事件发生。
在此特定示例中,将
x设置为随机浮点并将其与
0.1
进行比较
我喜欢这种方法,因为它可用于百分比整数以外的概率。