概率随机奖品

for (int j = 0; j < 100; j++) {

            List<Prize> prizes = prizeManager.findAll();

            double randomNumber;
            randomNumber = Math.random();

            for (int i = 0; i < prizes.size(); i++) {
                float start = 0;
                float end = 0;
                if(i==0){
                    start = 0;
                    end = (end + prizes.get(i).getWinningRate());
                }
                for (int k = 0; k < i; k++) {
                    start += prizes.get(k).getWinningRate();
                    end = (start+ prizes.get(k+1).getWinningRate());
                }
                double st = start / 100;
                double en = end / 100;
                /*System.out.println(randomNumber >= st );
                System.out.println(randomNumber <= en );*/
                if (randomNumber >= st && randomNumber <= en ) {
                    System.out.println(prizes.get(i).getPrizeName());
//                    return prizes.get(i).getPrizeName();
                }
                }
            }
时间: 2024-07-31 14:33:12

概率随机奖品的相关文章

java根据概率随机中奖 测试类

最近要做一个宝箱抽奖的功能 自己先联系了一下,分别用 list和set 进行存储和抽取,做了一个时间消耗的对比,感觉list应该比set读取的要快些,但是这也不一定,希望大家能够共同讨论. 废话少说上代码: package com.test.testRandom; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.u

python内置的一个好玩的函数-zip,并且巧妙的实现按概率随机生成有限个数的字符串。

python有一个比较有意思的内置函数-----zip,可以把传入的两组list进行一个组合变形,再输出子元素为tuple的list,不过变形的方式比较抽象. 举个例子: A=[1,2,3,4,5,6] B=['a','b','c','d'] v1=zip(A,B) v1的结果为: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')] 比较直观的理解就是,A和B是两道拉链上的扣子,生成的list的子tuple,每一组tuple就是一对扣好了的扣子,并且从每组list的

根据数字的出现的概率随机生成

今天的做项目用到了 根据数字出现的概率随机生成,看了一些园子里面大哥们的文章,总结一下, 示例:随机生成一个整数,该整数以50%的几率生成1,以40%的几率生成2,以10%的几率生成3.实现的代码如下: int n5 = r.nextInt(100); int m; //结果数字 if(n5 < 50){ //50个数字的区间,50%的几率 m = 1; }else if(n5 < 90){//[50,90),40个数字的区间,40%的几率 m = 2; }else{ m = 3; } 另外的

概率随机3(对极限定理的认识)

对于确定的量,比如一个班上的人数,桌子上面有5个苹果之类的.都是比较确定的事情,是已经存在的.概率所研究的是不确定性量和不可准测量,不确定量代表的是没有发生的事情,及随机事件(严格来讲,概率研究的是不确定性中的一种,即在一定结果范围内的不确定性).而不可准测量代表的是虽然量有准确值,但由于技术或者操作因素,无法测得其真实值,比如一支笔的长度,理论上你是不可能测得其真实值的.总结起来有以下三种情况: 1)抛硬币所代表的随机试验.2)样本与总体之间的问题3)近似值与真实值当然,在现实中,以上3类问题

等概率随机采样问题

1. 输入包含两个整数m和n,其中m<n.输出[0,n-1]内的m个随机数,要求:每个数选择出现的概率相等(也就是m/n),且按序输出. 依次考虑整数0,1,2,...,n-1,并通过一个适当的随机测试对每个整数进行选择.通过按序访问整数,可以保证输出结果是有序的. if m=2 and n=5,那么选择的每一个数字的概率都应该是2/5. 分析过程:在0,1,2,3,4这五个数字中 第一次遇到0时,它的选择概率应该是2/5,如果选中了,我们开始测试第二个数1,这个时候因为1选中了,所以1这个数字

设计一种结构,在该结构中有如下三个功能:insert(key):将某个key加入到该结构,做到不重复加入。delete(key):将原本在结构中的某个key移除。 getRandom():等概率随机返回结构中的任何一个key。【要求】 Insert、delete和getRandom方法的时间复杂度都是 O(1)

解题思路:创建hashmap,一个存K,数字,另一个存数字,K,每当插入元素时,将元素非别对应插入两个hashmap中目的是能够方变随机查找. public class RandomPool { public static class Pool<K>{ private HashMap<K,Integer> keyIndexMap; private HashMap<Integer,K> indexKeyMap; private int size; public Pool(

多件商品根据概率抽奖

最近在项目中分配了一个抽奖模块的任务,这里先说一下需求把:每个抽奖活动后台会配置多个中奖奖品,分为特殊奖品和普通奖品,所有奖品的中奖概率之和加起来为1.用户端用户抽奖需要根据概率来随机抽中一个商品.开始我脑子生出来的第一想法是生成一个随机数,然后让这个随机数跟概率去比较,取小于这个随机数的最大一个概率对应的商品为中奖商品,后来一想,发现自己想的太简单直观了,这样抽中的商品中奖概率不满足配置的中奖概率.在网上搜了一下相关的问题,然后就弄清楚了.说来惭愧,这么一个简单的算法题,自己竟然第一时间没有没

[学习笔记]概率&amp;期望

概率的性质 非负性:对于每一个事件$A,0\;\leq\;P(A)\;\leq\;1$. 规范性:对于必然事件$S,P(S)=1$;对于不可能事件$A,P(A)=0$. 容斥性:对于任意两个事件$A,B,P(A\;\cup\;B)=P(A)+P(B)-P(A\;\cap\;B)$. 互斥事件的可加性:设$A_1,A_2,...A_n$是互斥的$n$个事件,则$P(A_1\;\cup\;A2\;\cup\;...\;\cup\;A_n)=P(A_1)+P(A_2)+...+P(A_n)$.如果$A

利用随机函数生成随机数

给定一个rand(),可以产生从0到RAND_MAX的随机数,其中RAND_MAX很大(常见值:16位int能表示的最大整数32767),写出利用rand()生成[a,b]中任意整数的函数,其中a>=0, b<=RAND_MAX,且b-a<<RAND_MAX. 分析: 这是在编程工作最常见的随机函数的应用,在这里做一个起点再合适不过.把随机数区间的起点从0变为a,同时把一共RAND_MAX+1个数的区间缩小至只含有b-a+1个数的区间,写为 a + rand()%(b-a+1),此