random-中奖概率 new Random().nextInt(1000);这样对吗

问题描述

中奖概率 new Random().nextInt(1000);这样对吗

奖项 奖品 中奖概率 数量(个)
// 一等奖 免单 0.5% 5
// 二等奖 升舱 1% 10
// 三等奖 贵宾室 10% 100

这样对吗
// 大于等于0到1000之间不包括1000
        int i = new Random().nextInt(1000);
        if (i < 5) {
            System.out.println("一等奖" + i);
            break;
        } else if (i < 10) {
            System.out.println("二等奖" + i);
        } else if (i < 100) {
            System.out.println("二等奖" + i);
        } else {
            System.out.println("没中奖" + i);
        }

解决方案

需要你确定一下你的抽奖规则,一般来说,抽奖抽出来是不放回去的,比如抽到111号,应该是没中奖,但这个号应该就没了,你写的代码应该是抽完放回去的,有可能有2个人都抽到101,那么也有可能连续6个人都抽到一等奖,这就和你的5个一等奖矛盾了

解决方案二:

不对啊。你i是随机产生的数。 5 10 100 是中奖数量。 随机数怎么能小于中奖数量

解决方案三:

声明一个集合用来存放已抽过的号码,生成随机数之后,先进到集合里看看是否存在,不存在再进行中奖判断,中奖判断后把该数字添加到集合中,保证下次不再抽到

解决方案四:

楼主如果仅仅针对一次抽奖的话,这样或许能表达你的意思!
int i = new Random().nextInt(1000);
if (i < 5) {
System.out.println("一等奖" + i);
break;
} else if (i >= 5 & i
System.out.println("二等奖" + i);
} else if (i >= 15 & i < 115) {
System.out.println("三等奖" + i);
} else {
System.out.println("没中奖" + i);
}

解决方案五:

你这个是写死的,可以动态区算

解决方案六:

你这个就是随机数啊。

解决方案七:

没仔细看,但你的逻辑肯定有问题,因为你一等奖和二等奖的概率都是0.5%

解决方案八:

一等奖0 1 2 3 4
二等奖 5 6 7 8 9-----------------好像并不是10个。。。。。。。。。。。
三等奖 10.....99

解决方案九:

二等奖和三等奖都有问题,没有考虑前者占用的个数。

解决方案十:

                double[] rates = new double[]{2, 0.2, 50};
        //计算出randSeed
        int maxLength = 0;
        for (Double rate : rates) {
            BigDecimal decimal = new BigDecimal(rate.toString());
            decimal = decimal.subtract(new BigDecimal(rate.intValue()));
            String s = ((Double) decimal.doubleValue()).toString();
            String[] split = s.split("\.");
            int length = split[1].length();
            if (length > maxLength) {
                maxLength = length;
            }
        }
        int pow = new Double(Math.pow(10, maxLength)).intValue();
        int randSeed = pow * 100;
        int rand = RandomUtils.nextInt(randSeed);
        //排序
        Arrays.sort(rates);
        boolean flag = false;
        for (double rate : rates) {
            int intRate = new Double(rate * pow).intValue();
            if (intRate > rand) {
                flag = true;
            }
        }
        if (flag) {
            System.out.printf("恭喜中奖");
        } else {
            System.out.printf("没中奖");
        }
时间: 2024-12-30 23:34:02

random-中奖概率 new Random().nextInt(1000);这样对吗的相关文章

管理-服务器简单算法,大转盘活动,中奖概率,靠谱吗????

问题描述 服务器简单算法,大转盘活动,中奖概率,靠谱吗???? public Integer getRand() { Integer result = null; int sum = 100;//后台可更改 int randomNum = new Random().nextInt(sum);// 随机生成1到sum的整数 if (randomNum == 1) { result = 1;// 一等奖 } else if (randomNum < 5) { result = 2; // 二等奖 }

php实现可以设置中奖概率的抽奖程序代码分享

 这篇文章主要介绍了一个抽奖程序,要求一等奖的中奖概率是0.12%,二等奖中奖概率是3%,三等奖中奖概率是12%,其他中奖概率是都是谢谢惠顾 代码如下: <?php /**  * 抽奖  * @param int $total  */ function getReward($total=1000) {  $win1 = floor((0.12*$total)/100);  $win2 = floor((3*$total)/100);  $win3 = floor((12*$total)/100)

java-Java随机数取中奖概率问题

问题描述 Java随机数取中奖概率问题 求教:String str[] = new String[]{"20%","10%","30%","15%","25%"};这是一个概率数组,每个概率下对应一个值,我如何通过随机数来寻找我这个随机数是属于哪个概率里面的. 解决方案 这需要实验足够多次,看符合哪个概率. 好比通过买的彩票推测中奖率,需要大量买才知道,买一张是不知道的. 解决方案二: 每个概率下对应一个值

浅谈java中Math.random()与java.util.random()的区别_java

今天突然想起来,java产生随机数的问题,上机试了一下,找到了一点区别,在这里总结一下: 直接调用Math.random()是产生一个[0,1)之间的随机数, 如果用 java.util.Random random=new Random();random.nextInt() 这样产生一个长整型的随机数并且与上一次是一样的,如果过一会再产生就不会一样了,例如: for (int i = 0; i < 10; i++) { Random random=new Random(); Thread.sle

PHP中奖概率的抽奖算法程序代码

 初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面看一下整体的程序: 该程序是在ThinkPHP框架下完成的,使用了一些框架自带的类库和函数,下面我会逐一进行说明,控制器部分   抽奖算法需要满足的需求如下: 1.可以控制中奖的概率 2.具有随机性 3.最好可以控制奖品的数量 4.根据用户ID或者ip.手机号.QQ号等条件限制抽奖次数 初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面看一下整体的程序: 该程序是在ThinkPHP框架下完成的,使用了

php实现可以设置中奖概率的抽奖程序代码分享_php实例

复制代码 代码如下: <?php/** * 抽奖 * @param int $total */function getReward($total=1000){ $win1 = floor((0.12*$total)/100); $win2 = floor((3*$total)/100); $win3 = floor((12*$total)/100); $other = $total-$win1-$win2-$win3; $return = array(); for ($i=0;$i<$win1

java random nextint为什么我不能产生800个随机数,700个数字就可以

问题描述 java random nextint为什么我不能产生800个随机数,700个数字就可以 public static void main(String[] args) { Scanner input=new Scanner(System.in);//创建一个键盘扫描类对象 System.out.print(""请您输入排序个数:""); int num=input.nextInt(); //输入整型 System.out.print(""

J2ME中Random类的使用

dom 在J2ME中,由于大部分的游戏都会涉及到随机性的事件,Random类自然就成为J2ME程序员经常使用的一个类了.但是对于新手来说,Random类看似简单,也有可能会出现这样那样的错误.所以在这里把我对于这个类的使用心得总结一下. random类在CLDC1.0中就已经定义了.这个类有两个构造函数Random() 和Random(long seed) 并且提供了四个常用方法: next(int bits) nextInt() nextLong() setSeed(long seed) 其中

random函数详解

dom|函数|详解    关于FLASH的效果,我想大家都想做出那种"不但让人一看忘不了,而且看了还想看"的效果吧?"一看忘不了"固然是高手作品,"看了还想看"也需要深厚功底和作品丰富的内涵.作为我们菜鸟,自然一时半全达不到那种高度.但是我们至少可以做到让人"每次看都有新鲜感",关键是什么? ActionScrpt!    当然,如题,我是想讲random函数.AS其它方面的就留给高手了.这篇是献给菜鸟们看的.虽说是给菜鸟看的