Java 带if-else的随机彩票
我已有以下资料:Java 带if-else的随机彩票,java,switch-statement,Java,Switch Statement,我已有以下资料: public class RandomTickets { public static void main(String[] args) { final int MIN = 0, MAX = 3; int ticketQuant = ((int)(Math.random() * (MAX + 1 - MIN))) + MIN; System.out.println(); System.out.print("You ha
public class RandomTickets
{
public static void main(String[] args)
{
final int MIN = 0, MAX = 3;
int ticketQuant = ((int)(Math.random() * (MAX + 1 - MIN))) + MIN;
System.out.println();
System.out.print("You have won " + ticketQuant);
System.out.println(ticketQuant == 1 ? " ticket." : " tickets.");
System.out.println();
}
}
但我想做的是修改程序,以便:
- 15分之一的机会赢得3张票
- 赢得两张票的几率为15分之2
- 15分之4的机会赢得一张票
有什么想法吗 非常简单的解决方案:
final Random random = new Random();
final int r = 1 + random.nextInt(15);
final ticketCount;
if (r <= 4) {
ticketCount = 1;
} else if (r <= 6) {
ticketCount = 2;
} else if (r <= 7) {
ticketCount = 3;
}
//为每个幸运儿指定数字
最终列表luck1OutOf15=Arrays.asList(1);
final List luck2OutOf15=Arrays.asList(2,3);
final List luck4OutOf15=Arrays.asList(4,5,6,7);
最终随机数=新随机数();
最终整数运气=随机。下一个整数(15)+1;
最终整数票数;
if(luck1OutOf15.contains(luck)){
票数=3;
}else if(luck2OutOf15.contains(luck)){
票数=2;
}else if(luck4OutOf15.contains(luck)){
票数=1;
}否则{
票数=0;
}
不如改为生成一个介于1和15(含)之间的数字?如果号码小于或等于4
,则至少赢得了一张彩票。依此类推(嵌套if
检查其他两个条件)。作为我上面评论的补充,我将解决这个问题的方法是使用带有故障案例的开关。一种常见情况是4
和3
,一种常见情况是2
,最后一种常见情况是1
。每种情况下,将“ticket”变量增加1(当然最初初始化为零)。切换后,“ticket”变量将是1
、2
或3
,具有您想要的概率。或者可能我误解了您和概率?不要紧,只要调整if
语句中的条件,这样正好有四个数字是有效的(例如randomNumber>=4&&randomNumber您介意在代码、switch语句中向我演示如何执行此操作吗?我很困惑!:)我让您想一想,让你自己先想想。那么,如果你还没有自己解决,也许我会给你看。:)
ticketCount = ((r ^ 15) == 0 ? 3 : 0) +
(((r | 1) ^ 9) == 0 ? 2 : 0) +
(((r | 3) ^ 7) == 0 ? 1 : 0);
// Designate numbers for each luck
final List<Integer> luck1OutOf15 = Arrays.asList(1);
final List<Integer> luck2OutOf15 = Arrays.asList(2, 3);
final List<Integer> luck4OutOf15 = Arrays.asList(4, 5, 6, 7);
final Random random = new Random();
final int luck = random.nextInt(15) + 1;
final int ticketCount;
if (luck1OutOf15.contains(luck)) {
ticketCount = 3;
} else if (luck2OutOf15.contains(luck)) {
ticketCount = 2;
} else if (luck4OutOf15.contains(luck)) {
ticketCount = 1;
} else {
ticketCount = 0;
}