通过随机数生成权重

import java.util.ArrayList;  
import java.util.List;  
import java.util.Random;  
   
public class WeightRandom {  
    static List<WeightCategory>  categorys = new ArrayList<WeightCategory>();  
    private static Random random = new Random();  
       
    public static void initData() {  
        WeightCategory wc1 = new WeightCategory("A",60);  
        WeightCategory wc2 = new WeightCategory("B",20);  
        WeightCategory wc3 = new WeightCategory("C",20);  
        categorys.add(wc1);  
        categorys.add(wc2);  
        categorys.add(wc3);  
    }  
   
    public static void main(String[] args) {  
          initData();  
          Integer weightSum = 0;  
          for (WeightCategory wc : categorys) {  
              weightSum += wc.getWeight();  
          }  
   
          if (weightSum <= 0) {  
           System.err.println("Error: weightSum=" + weightSum.toString());  
           return;  
          }  
          Integer m = 0;  
          
         Integer A=0;
         Integer B=0;
         Integer C=0;
          
          while(true){
        	  Integer n = random.nextInt(weightSum); // n in [0, weightSum)  
              
              
              for (WeightCategory wc : categorys) {  
                   if (m <= n && n < m + wc.getWeight()) {  
                     System.out.println("This Random Category is "+wc.getCategory()+"\n");
                  
                     
                     if(wc.getCategory()=="A")
                     {
                    	 A+=1;
                     }
                     
                     if(wc.getCategory()=="B"){
                    	 B+=1;
                     }
                     
                     if(wc.getCategory()=="C"){
                    	 C+=1;
                     } 
                    System.out.println("A="+A+"   ;B="+B+"  C:"+C);     
                
                   }  
                   m += wc.getWeight(); 
                   if(m>=weightSum){
                   	m=0;
                   }
              }  	  
          }
         
   
             
    }  
   
}  
   
class WeightCategory {  
    private String category;  
    private Integer weight;  
       
   
    public WeightCategory() {  
        super();  
    }  
   
    public WeightCategory(String category, Integer weight) {  
        super();  
        this.setCategory(category);  
        this.setWeight(weight);  
    }  
   
   
    public Integer getWeight() {  
        return weight;  
    }  
   
    public void setWeight(Integer weight) {  
        this.weight = weight;  
    }  
   
    public String getCategory() {  
        return category;  
    }  
   
    public void setCategory(String category) {  
        this.category = category;  
    }  
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值