随机数 权重 概率

来源:互联网 发布:淘宝黑搜原理 编辑:程序博客网 时间:2024/06/05 17:20
有个很简单的思路,你可以试试。
生成两次随机数,第一次范围在1到100范围内,设生成的数为x
判断x,再用随机数生成y
1. 若x在[1,25]内,则生成y时,设置随机数范围为6到9
2.若x在[26,75]内,则生成y时,随机数范围为10到14
3.剩余情况,则生成y时,设置范围为15到18

得到的y即为你要求的随机数


#include<stdlib.h>

#include<stdio.h>

#include<time.h>

void main()

     int i,j; 

     srand((unsigned)time(NULL));   

     for(i=0;i<100;i++) 

     {     

          j=rand()%100;

    if(j<25)     //6到10的25%

    {

     j=rand()%10;

     while(j<6)

      j=rand()%10;

    }

    else if(j<75)    //11到14的50%

    {

     j=rand()%15;

     while(j<10)

      j=rand()%15;

    }

    else      //15到18的25%

    {

     j=rand()%19;

     while(j<15)

       j=rand()%19;

    }

          printf("%d\t",j);

     }

}


0 0