送交者: chen09 于 2009-06-10, 05:19:32:
回答: 求解两道概率题 由 heretic 于 2009-06-09, 22:03:54:
Children.java
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
public class Children {
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
new Children().proc(50, 130000);
}
}
public void proc(long birthCount, int familyCount) {
Random random = new Random(System.currentTimeMillis());
List<Family> listFamily = new LinkedList<Family>();
for (int i = 0; i < familyCount; i++) {
listFamily.add(new Family());
}
for (long i = 0; i < birthCount; i++) {
for (Iterator<Family> families = listFamily.iterator(); families.hasNext();) {
Family family = families.next();
family.birth(random.nextBoolean());
}
}
long longGirl = 0;
long longBoy = 0;
for (Iterator<Family> families = listFamily.iterator(); families.hasNext();) {
Family family = families.next();
longGirl += family.girl;
longBoy += family.boy;
}
System.out.println(longGirl + ":" + longBoy);
}
class Family {
public long boy;
public long girl;
public boolean isStop;
public Family() {
boy = 0;
girl = 0;
isStop = false;
}
public void birth(boolean isBoy) {
if (isStop)
return;
if (isBoy) {
boy++;
isStop = true;
} else {
girl++;
}
}
}
}