您的位置:程序门 -> java -> j2se / 基础类



请教一个按照概率抽取奖品的算法


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教一个按照概率抽取奖品的算法
发表于:2007-09-13 13:56:46 楼主
譬如有若干个奖品,   当客户触发某事件的时候,   就会根据这些奖品各自的概率抽取一份奖品出来应该怎么实现呢?

例:
gifta   :   50%
giftb   :   15%
giftc   :   25%
giftd   :   10%
发表于:2007-09-13 14:14:511楼 得分:0
int   n   =   50;
random   r   =   new   random();
if(r.nextint(100)+1   <=   n)   {
//........
}
发表于:2007-09-13 14:20:282楼 得分:0
把礼物排成100长度的队列,然后gifta   :   50%   占领   a[0]--a[49]
这样在100数组里面随便random出来一个下标不就搞定了么
发表于:2007-09-13 14:21:363楼 得分:0
楼上的
你这样只有50%中奖了
实际是100%中奖,   但是哪哪个奖品就看概率
发表于:2007-09-13 14:25:594楼 得分:0
switch下不就行了吗...
还非要写全了呀...
发表于:2007-09-13 14:27:425楼 得分:0
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 ");
}
}
本人不才,方法有点笨
发表于:2007-09-13 14:28:256楼 得分:0
用摇号的来了。编写什么程序,麻烦。
发表于:2007-09-13 14:33:047楼 得分:0
写得太死了,   奖品   和   概率会改变的
发表于:2007-09-13 14:59:498楼 得分:0
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;}

}
发表于:2007-09-13 15:09:199楼 得分:0
忘了...跟if(g.tostring().equalsignorecase(s))里面加个break


快速检索

最新资讯
热门点击