我想到个办法(见一下4个步骤),希望能帮到你:
1. 将群体中的所有个体排好顺序(任意顺序,只是不要在后面计算中变化顺序就可以),按下列方式逐个算出一组数据(假设你那个群体中有m个个体)即:S(0)=0, S(1)=f1, S(2)=S(1)+f2, S(3)=S(2)+f3, ... S(m) = S(m-1)+fm,形成m+1个数S(0),...S(m)。
2. 从(0,S(m))的均匀分布中随机取出1个数,设为w;
3. 对于这个w, 找出一个对应的自然数x,x需要满足使s(x-1)<wi<=s(x),那么群体第x个个体就是被抽中的数(注意:如果你的要求群体中每个个体不能被重复抽中,那么你需要在此时判断,这抽中的第x个个体是否已被抽中过,如果没有,抽取这个数的任务完成,可进入第4步;如果已与之前抽到的数重复,就需重新回到第2步重新抽取。如果群体中每个个体可以被重复抽中,那么不必增加上述判断,抽取这个数的任务直接完成,可进入第4步)。
4.重复第2-3步,直到抽中的个体数占到群体个数的n%。
这些个选出来的个体就是你要抽取的个体。(即第i个个体被抽中的概率是fi)
如果,不知道如何实现第3步中的“从(0,S(m))的均匀分布中随机取出1个数”,可以打开EXCEL,在任意格输入函数=RAND()*xx, 这里xx是S(m)的值。如果用VBA编程,调用函数rnd()*xx (xx是S(m)的值)来取。其他软件也都有均匀分布随机数产生函数,不再一一列举。