非等概率随机

非等概率随机

ID:40907759

大小:36.00 KB

页数:5页

时间:2019-08-10

非等概率随机_第1页
非等概率随机_第2页
非等概率随机_第3页
非等概率随机_第4页
非等概率随机_第5页
资源描述:

《非等概率随机》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、非等概率随机   对一序列数字随机时一般都是等概率的,但有时候希望某些数字出现的可能性更高一些。下面是本人实现的一个非等概率随机函数,可以对序列中多个数字设置不同的出现频率。限于编码水平,如有需要改进之处敬请指点./****************************rand_seting.h********************************/#ifndefRAND_SETING_H#defineRAND_SETING_H#include#include/* *    随机条件结构: *    定义min到max之间个数字出现的频率

2、,默认为1次. *    如果希望某些数字出现频率大于1次,则把这些数字存入数字集(由pmore指向), *    对应的出现频率存入频率集(由ptms指向),这两个缓冲区由用户定义及设置, *    lmore和ltms分别为对应的缓冲区长度,建议两缓冲区长度相等,允许ltms>lmore, *    但绝不允许ltms

3、,7,15}lmore=3 *    ptms指向的缓冲区为{5,10,20}ltms=3(建议为此值,但也可以大于3) *    当根据这个条件产生随机数时,随机区间为:20+(5-1)+(10-1)+(20-1)=52 *    3被随机到的概率为:5/52 *    7被随机到的概率为:10/52 *15被随机到的概率为:20/52 *其它数字的概率则为:1/52 */structrd_dat{   long    min;    //起始值     long    max;    //终止值     long    *pmore;    //高频率数字集     long   

4、 lmore;    //数字集长度     long    *ptms;    //高频率数字对应的频率集(出现次数)     long    ltms;    //频率集长度};/* *    结构初始化 *    返回值:结构指针 */structrd_dat*rdinit(structrd_dat*rt,longmin,longmax,                long*pm,longlm,long*pt,longlt){    rt->min=min;    rt->max=max;    rt->pmore=pm;    rt->lmore=lm;    rt->pt

5、ms=pt;    rt->ltms=lt;    returnrt;}/* *    获取随机数,存放在bufret数组中,个数为数组长度bufsz *    返回值:出现非法数据返回-1;否则成功返回,值为获取到随机数的个数(bufsz) */intrdget(conststructrd_dat*rt,long*bufret,longbufsz){    long    rval,exmax=0;    long    i,j,tmp;         //验证数据的合法性     if(rt->min>rt->max

6、

7、rt->lmore!=rt->ltms

8、

9、bufsz<1){

10、          return-1;     }     if(rt->pmore==NULL

11、

12、rt->ptms==NULL

13、

14、bufret==NULL){          return-1;     }     for(i=0;ilmore;i++){          if(rt->pmore[i]min

15、

16、rt->pmore[i]>rt->max){               return-1;          }          if(rt->ptms[i]<1){           return-1;          }     }    

17、 //获取扩展最大值     exmax=rt->max-rt->min+1;     for(i=0;iltms;i++){          exmax+=rt->ptms[i]-1;     }     //获取bufsz个随机数     srand(time(NULL));            //初始化随机数发生器     for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。