在一组数中,根据每个数对应的权重值随机抽选,要求权重值越大,被抽到的几率也大,权重值小,被抽到的几率也小。是一个考试选题的应用,在题库中随机选题,每道题目对应一个权重,老师通过设置题目的权重,控制题目被抽到的几率,谢谢网友回复,分不多,笑纳!

解决方案 »

  1.   

    想象一下,有一个池[数组或list等],放这些题目的ID,权重多大,就放多少个,比如权重是5,就放五个这题目的ID进去,正常情况下都是1,就是只放一个,抽取题目就是先在这池里取,再根据ID找到这些题目。
      

  2.   

    因为系统随机数(可以认为)是在一个区间上均匀分布,且每个区间概率相等。
    所以制造概率不等的办法就是让这些区间有的大有的小,比如:
    int x = rnd.Next(0, 100); //取0~100任意数字
    if (x < 20) //有20%的可能
       ...
    else
       ... // 有80%的可能