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])