package com.zxg.lottery.server.web.demo; import java.util.Random; /** * @program: lucky * @author: Mr.Han * @create: 2019-01-16 14:47 **/ /** * 抽奖算法demo */ public class Lucky { public static void main(String[] args) { Model m1 = new Model(); m1.setName("1号"); m1.setProbability(301); Model m2 = new Model(); m2.setName("2号"); m2.setProbability(208); Model m3 = new Model(); m3.setName("3号"); m3.setProbability(59); Model m4 = new Model(); m4.setName("4号"); m4.setProbability(11); Model[] arr = {m1,m2,m3,m4}; //Task task = its.isTimeTask(); int result = lucky(arr); System.out.println(arr[result].getName()); arr[result].setProbability(0); int result2 = lucky(arr); System.out.println(arr[result2].getName()); arr[result].setProbability(0); } public static int lucky(Model[] arr){ //计算概率总和 Integer len = 0; for(int i=0; i<arr.length; i++){ len+=arr[i].getProbability(); } //通过概率总和生成随机数 Random rm = new Random(); int random = rm.nextInt(len); //概率递增记录 int b = 0; for(int i=0; i<arr.length; i++){ b+=arr[i].getProbability(); //如果随机数小于等于之前的概率总和,返回数组下标 if(random<=b){ return i; } } throw new RuntimeException("error"); } } class Model{ private String name; private int probability; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getProbability() { return probability; } public void setProbability(int probability) { this.probability = probability; } }
java抽奖算法
最新推荐文章于 2024-08-24 17:30:53 发布