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;
}
}