扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
中奖率 1%,每人抽 10 次,也就是说 10 个人就可以抽 100 次,概率上来说 10 个人必中奖?假设逻辑是这样的,可以这样设计:
成都创新互联公司主营法库网站建设的网络公司,主营网站建设方案,重庆APP软件开发,法库h5微信小程序搭建,法库网站营销推广欢迎法库等地区企业咨询
1、先写定义一个表示概率的数组 ratio,这个数组最多可以存 100 个数字,每个数字的值不能重复,范围是 0 到 100,表示 100%。现在你的中奖率是 1%,那么就存一个数字。
2、定义一个是否中将的布尔型变量 win;
每次抽奖用随机正整数对 100 取余,再将结果拿到 ratio 数组中查找,如果找到就将 win 赋值为 true,表示中奖。如果没找到就对 win 赋值为 false,表示没有中奖。
可以做到!用 Random 得到随机的数,再根据你的登陆人的身份 控制随机的次数是多少!
例如:
1 - 20 为中奖, 普通就随机出 10000个数。会员的话就随机100个数就好了!
调试好了 直接用 public static void main(String[] args) { Random rand = new Random();//定义随机数产生器 List list_One = new ArrayList();//定义一等奖数字集合 List list = null; //用list时 /*list = new ArrayList();//定义100个随机数 集合 for(int i = 0; i 100;){//产生100个3位数 的随机不重复数字 if(check(rand.nextInt(899) + 100,list)){ i++; } }*/ //用set时 Set set = new HashSet(); while(set.size() 100){ set.add(rand.nextInt(899) + 100); } list = new ArrayList(set); for(int k = 0; k 5;){//产生5个随机一等奖 if(check(rand.nextInt(100),list,list_One)) k++; } } for(int a = 0; a list_One.size();a++){ System.out.println(list_One.get(a)); } } /** * 验证该数字是否在集合中 * @param i * @param list * @return */ public static boolean check(int i,List list){ if(list.size() == 0){ list.add(i); }else{ for(int j = 0; j list.size(); j++){ if(i == list.get(j)){ return false; } } list.add(i); } return true; } /** * 抽取随机数作为中奖的下标(重载) * @param i * @param list * @param list_One * @return */ public static boolean check(int i,List list,List list_One){ if(list.size() == 0){ list_One.add(list.get(i)); }else{ for(int j = 0; j list.size(); j++){ if(i == list.get(j)){ return false; } } list_One.add(list.get(i)); } return true; }
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流