面试题算法题

1. 给你5个球,每个球被抽到的可能性为30、50、20、40、10,设计一个随机算法,该算法的输出结果为本次执行的结果。

   输出A,B,C,D,E即可。

  让范围大的球放在最上面判断,这样可能一次或两次就判断出来的概率就更高,从理论和客观角度都应该可以减少判断的次数。利用了霍   夫曼编码的原理。

public static String ranomBall() {
  int ran = (int)(Matn.random()*150);
  if (ran < 50) {
  return "B";
  } else if (ran < 90) {
  return "D";
  } else if (ran < 120) {
  return "A";
  } else if (ran < 140) {
  return "C";
  } else {
  return "E";
  }
}
System.out.println(randomBall());
  10个或更多该怎么办?

  建立一个字符数组a[150]。a[1...50]='A',a[51....90]='D',...a[141...150]='E',然后System.out.println(a[Math.random()*150])
 

你可能感兴趣的:(算法,求职)