如果是我,我马上想到的方法是这样.如果我有两张图片,A和B,分别的显示概率是60%和40%.那我就定义一个随机函数
 public static int random() {
   return (int) (Math.random() * 100);
 }
根据这个函数的返回值在那一个范围,我就决定显示那张图.
比如返回的数在[0-59]那么就显示A,剩下的就显示B.当然代码的世界,你没办法找到一个真正的"随机",一切都是计算所得.

解决方案 »

  1.   

    可以这样考虑,把要分配的东西放到一个容量为100的数组里,当然提前把比例放对,比如有30个A,40个B,30个C
    然后随机0-99的数,从数组中取出来就是这个,模拟一个随机取东西的方法
      

  2.   

    随机 一个 设置的大点。
    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)]);
    }
      

  3.   

    随机一个(1-100)的数除以100得到的数再通过sql查询(比(1-100)/100这个比例大的)升序列出返回第一个就是你要的
      

  4.   

    这个是可以随便改的,所以得想办法在改变概率的时候也改变if判断中要显示的图片。随机数肯定是要用的,可能是我描述的不清楚吧...这个是可以随便改的,所以得想办法在改变概率的时候也改变if判断中要显示的图片。随机数肯定是要用的,可能是我描述的不清楚吧...
      

  5.   


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

  6.   


    有点看不懂啊......
    总体思路就是给整个事件分段,a/b/c..按照概率分成不同的段,然后产生一个随机数,该随机数所在的段即为选择到的值。
      

  7.   

    楼上的各位大神想的都是算法,其实鄙人觉得没那么复杂,自己顶一个自增变量,通过余数来决定出哪些图片。余数顶多也就是0-9的范围,根据这个来判定我觉得更简单
    比如有A、B两张图片,A要出现6次,B要出现4次。
    可以在配置文件里面配置A出现的条件是余数为0、2、4、5、6、8,则B出现的条件是余数为1、3、7、9.定义一个自动增长的int变量i,没显示一次i++一次,大概算了一下,只需要5-7行代码就可以决定出现哪个图片