67,550
社区成员




private static void test() {
// map 记录每个图片的概率
Map<String, Float> map = new HashMap<String, Float>();
// a,b,c的概率和也可以不为1,它对自动把概率值当比例值去运行。
map.put("a", 0.3f);
map.put("b", 0.2f);
map.put("c", 0.1f);
// 返回的s就是按照上面的概率参数的。
String s = probability(map);
System.out.println(s);
}
/**
* 按照概率集合参数随机对象
* @param map
* @return
*/
private static String probability(Map<String, Float> map) {
Float total = 0f;
Map<Float, String> tempMap = new LinkedHashMap<Float, String>(); // 使用有序的map集合以保证key值是递增的
Iterator<Entry<String, Float>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Float> entry = (Map.Entry<String, Float>) it.next();
total += entry.getValue();
tempMap.put(total, entry.getKey());
}
float index = new Random().nextFloat()*total;
Iterator<Entry<Float, String>> tempIt = tempMap.entrySet().iterator();
while (tempIt.hasNext()) {
Entry<Float, String> next = tempIt.next();
if (index < next.getKey()) {
return next.getValue();
}
}
return null;
}
java.util.Random r=new java.util.Random();
int[] x={1,1,2,1,1,1,4};
for(int i=0;i<10;i++){
System.out.println(x[r.nextInt(7)]);
}
public static int random() {
return (int) (Math.random() * 100);
}
根据这个函数的返回值在那一个范围,我就决定显示那张图.
比如返回的数在[0-59]那么就显示A,剩下的就显示B.
当然代码的世界,你没办法找到一个真正的"随机",一切都是计算所得.