某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下

作者在 2010-05-26 17:13:24 发布以下内容

某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:

1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为012,……,n-1。手机随机放在其中一个盒子中。(n为自然数)

2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。(m为自然数,m<n

3)直到重新摸到0号盒子为止。

例如n=5m=3,那么摸奖经过的盒子编号依次为031420

请编写一个完整的程序,随机输入nmm<n),程序分析手机有没有不被抽中的机会?如果有,概率是多少? (概率=不被抽中的可能数/n)(30分)

public class Jiang {

    static int num = 0;



    static double su = 0;



    public static void main(String[] args) {

        int n = Integer.parseInt(args[0]), m = Integer.parseInt(args[1]);//盒子的个数,和每次要数的数

        double k = Math.random() * 30;

        int k1 = (int) k;//将手机放在这里

        System.out.println("手机发在" + k1 + "箱中");

        List<Integer> list = new ArrayList<Integer>();

        for (int i = 0; i < n; i++) {

            list.add(i);

        }

        loop: while (true) {



            for (int i = 0; i < list.size(); i++) {

                num++;

                if (num == m) {

                    su++;

                    num = 0;

                    int woe = (int) list.get(i) + 1;

                    if (woe == (list.get(list.size() - 1) + 1)) {

                        woe = 0;

                    }

                    System.out.println(woe + "箱被抽到");

                    if (woe == k1) {

                        System.out.println("恭喜您中奖了");

                        System.out.println("中奖的概率是" + (su / n) * 100 + "%");

                        break loop;

                    } else if (woe == 0) {

                        System.out.println("很遗憾你没有中奖");

                        break loop;

                    }

                }



            }



        }

    }



}

 

专业文章 | 阅读 1196 次
文章评论,共1条
源本英明C
2010-06-21 16:16
1
<img src="image/face/4.gif" class="face">
游客请输入验证码
浏览290907次