今天去搜狐參加實習生筆試,最後有道題就是發紅包。
題目要求如下:
1、每個人都要能夠領取到紅包;
2、每個人領取到的紅包金額總和=總金額;
3、每個人領取到的紅包金額不等,但也不能差的太離譜,不然就沒趣味;
import java.util.*;
public class Test{
public static void main(String args[]){
randSum(10,10);
}
private static void randSum(int num, float total) {
//random number generator
Random rn = new Random();
//container of random numbers
ArrayList<Float> randNums = new ArrayList<Float>();
//container of final results
ArrayList<Float> finalResult = new ArrayList<Float>();
// the sum of generated random numbers
float genSum = 0;
//generate random numbers
for (int i = 0; i < num; i++) {
float r0 = rn.nextFloat();
genSum += r0;
randNums.add(r0);
//System.out.println(randNums.get(i));
}
// calculate final results
for (int i = 0; i < randNums.size(); i++) {
//finalResult.add( (randNums.get(i)/genSum)*total);
float rNum = (randNums.get(i)/genSum)*total;
finalResult.add(rNum);
}
//print results
Collections.sort(finalResult);
float sum = 0;
for(float x : finalResult){
System.out.println(x);
sum += x;
}
// print final total amount
//System.out.println(sum);
}
}
0.08440706
0.2599706
0.82681423
1.0897439
1.2572217
1.4412992
1.4780049
1.643845
1.9125202