譬如有若干个奖品, 当客户触发某事件的时候, 就会根据这些奖品各自的概率抽取一份奖品出来应该怎么实现呢?例:
GiftA : 50%
GiftB : 15%
GiftC : 25%
GiftD : 10%

解决方案 »

  1.   

    int n = 50;
    Random r = new Random();
    if(r.nextInt(100)+1 <= n) {
    //........
    }
      

  2.   

    把礼物排成100长度的队列,然后GiftA : 50% 占领 a[0]--a[49]
    这样在100数组里面随便random出来一个下标不就搞定了么
      

  3.   

    switch下不就行了吗...
    还非要写全了呀...
      

  4.   

    public static void main(String[] args) {
    Random random = new Random();
    int a = 50;
    int b = 15;
    int c = 25;
    int d = 10;
    int ra = random.nextInt(100);
    if(ra<=a){
    System.out.println("a");
    }else if(a<ra&&ra<=a+b){
    System.out.println("b");
    }else if(a+b<ra&&ra<=a+b+c){
    System.out.println("c");
    }else if(a+b+c<ra&&ra<=a+b+c+d){
    System.out.println("d");
    }
    }
    本人不才,方法有点笨
      

  5.   

    import java.util.*;
    public class Test24 {
    public static void main(String[] args) {
    Random r = new Random();
    System.out.println("Please Choose Your Gift!");
    for(Gift g : Gift.values()) {
    System.out.print(g.toString() + " ");
    }
    System.out.print("\n" + "Input: ");
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    for(Gift g : Gift.values()) {
    if(g.toString().equalsIgnoreCase(s)) {
    if (r.nextInt(100) + 1 < g.getP()) {
    System.out.println("You get " + g.toString());
    } else {
    System.out.println("Sorry");
    }
    }
    }
    }
    }enum Gift {
    A(50), B(15), C(25), D(10);
    private int p;
    private Gift(int p) {this.p = p;}
    public int getP() {return p;}

    }
      

  6.   

    忘了...跟if(g.toString().equalsIgnoreCase(s))里面加个break