コード例 #1
0
  public Track chooseTrack(Random random) {
    Track[] tracks = getTracks();
    float[] probs = new float[tracks.length];

    float totalProb = 0;
    for (int i = 0; i < tracks.length; i++) {
      totalProb += getProbability(tracks[i]);
      probs[i] = totalProb;
      //      System.out.println(Float.toString(totalProb) + " " + getProbability(tracks[i]) + " " +
      // tracks[i]);
    }

    if (totalProb == 0) return null;

    while (true) {
      float rand = Math.abs(random.nextFloat()) * totalProb;
      //      System.out.println("r=" + Float.toString(rand));
      for (int i = 0; i < tracks.length; i++) if (rand <= probs[i]) return tracks[i];
    }
  }