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的机会赢得一张票
我想使用switch语句


有什么想法吗

非常简单的解决方案:

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