抽奖概率的计算
抽奖系统要给定几个概率,一等奖0.1%二等奖0.2%三等奖0.5%幸运奖1%其余不中奖如何进行判断这些概率???用什么方法来实现?写一个JAVA的方法实现这个过程如果可以...
抽奖系统
要给定几个概率,一等奖0.1% 二等奖0.2% 三等奖 0.5% 幸运奖 1% 其余不中奖
如何进行判断这些概率???
用什么方法来实现?写一个JAVA的方法实现这个过程
如果可以实现 我可以追加分 展开
要给定几个概率,一等奖0.1% 二等奖0.2% 三等奖 0.5% 幸运奖 1% 其余不中奖
如何进行判断这些概率???
用什么方法来实现?写一个JAVA的方法实现这个过程
如果可以实现 我可以追加分 展开
5个回答
展开全部
/*
* 下面方法是在考虑奖项有名额限制的情况下
* 暂定一等奖1名 二等奖 2名 3等级3名 幸运奖10名
* 中奖方法适用math.random(1000)
*/
Integer one = 1;
Integer two = 2;
Integer three = 3;
Integer lucky = 10;
public Integer Lottery(){//返回值:1-一等奖 2-二等奖 3-三等奖 4-幸运奖 0-不中奖
Integer ranNum = (int)(Math.random()*1000);
System.out.println(ranNum);
if(ranNum>=0&&ranNum<10)//获奖范围内
{
if(ranNum==0)//获得0 概率为0.1%
{
if(one>0)
{
one--;
return 1;
}
if(two>0)
{
two--;
return 2;
}
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}
if(ranNum>=0&&ranNum<2)
{
if(two>0)
{
two--;
return 2;
}
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}
if(ranNum>=0&&ranNum<5)
{
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}
if(lucky>0)
{
lucky--;
return 4;
}
}
return 0;
}
* 下面方法是在考虑奖项有名额限制的情况下
* 暂定一等奖1名 二等奖 2名 3等级3名 幸运奖10名
* 中奖方法适用math.random(1000)
*/
Integer one = 1;
Integer two = 2;
Integer three = 3;
Integer lucky = 10;
public Integer Lottery(){//返回值:1-一等奖 2-二等奖 3-三等奖 4-幸运奖 0-不中奖
Integer ranNum = (int)(Math.random()*1000);
System.out.println(ranNum);
if(ranNum>=0&&ranNum<10)//获奖范围内
{
if(ranNum==0)//获得0 概率为0.1%
{
if(one>0)
{
one--;
return 1;
}
if(two>0)
{
two--;
return 2;
}
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}
if(ranNum>=0&&ranNum<2)
{
if(two>0)
{
two--;
return 2;
}
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}
if(ranNum>=0&&ranNum<5)
{
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}
if(lucky>0)
{
lucky--;
return 4;
}
}
return 0;
}
追问
有一个问题 没考虑到。
这些奖品是存放在数据库的,当抽中奖后,奖品的数量就会减少,当抽完后,那客户也就抽不到这个奖项了。这部分该怎么实现? 你这是用什么语言写的? 怎么我看不懂啊?
展开全部
可以给你个思路, 你可以设置一千个数字,其中只有一个数字为中奖数字,抽中为一等奖,设置其中两个数字为二等奖数字,抽中为二等奖,设置5个数字为三等奖数字,抽中为三等奖,设置十个数字为幸运奖数字,抽中为幸运奖,中奖数字都别重复,开一个随机数生成 0-1000的整数。
具体实现你可以慢慢琢磨
具体实现你可以慢慢琢磨
追问
这个我也想到了,现在就是不知道用什么方法来实现这个东西,而且当某个奖项被人抽中了的话,这个奖项应该就失效了。又该怎么办?
追答
如果说一个奖项被抽中了,你做个判断,抽中了就把那个奖项数字设置为普通数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Random;
public class NewMain {
public static void main(String[] args) {
String s = getResult();
System.out.println(s);
}
private static String getResult() {
String ss = "您未中奖";
/**
* 取0~999的随机数,
* 如果是0则中1等奖
* 1和2中2等奖
* 3 4 5 6 7中3等奖
* 8~17是幸运奖
*/
Random random = new Random();
int i = random.nextInt(1000);//取1000个随机数 0~999
System.out.println("随机数是:"+i);//可以不打印这句
//判断随机数
if(i==0){
ss = "您中了一等奖";
}else if(i==1||i==2){
ss = "您中了二等奖";
}else if(i>=3&&i<=7){
ss = "您中了三等奖";
}else if(i>=8&&i<=17){
ss = "您中了幸运奖";
}
return ss;
}
}
public class NewMain {
public static void main(String[] args) {
String s = getResult();
System.out.println(s);
}
private static String getResult() {
String ss = "您未中奖";
/**
* 取0~999的随机数,
* 如果是0则中1等奖
* 1和2中2等奖
* 3 4 5 6 7中3等奖
* 8~17是幸运奖
*/
Random random = new Random();
int i = random.nextInt(1000);//取1000个随机数 0~999
System.out.println("随机数是:"+i);//可以不打印这句
//判断随机数
if(i==0){
ss = "您中了一等奖";
}else if(i==1||i==2){
ss = "您中了二等奖";
}else if(i>=3&&i<=7){
ss = "您中了三等奖";
}else if(i>=8&&i<=17){
ss = "您中了幸运奖";
}
return ss;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以考虑把1-1000的数字进行打乱,(假设1为一等奖,2、3为2等奖。。),完全打乱(打乱方式可以参照ls的,如用随机数产生)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
几个1等奖 几个2等奖 几个三等奖? 几个幸运奖?
追问
5个一等奖 10个二等奖 20个三等奖 50个幸运奖 不中奖 若干
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询