任意实数范围内的随机数生成原理图解
2015-05-30 20:46
316 查看
实数区间内随机数产生原理 - 图解分析
1 //产生[low,high]内的任意随机数,并返回 2 float randnum(float low,float high) 3 { 4 int ret_rnd = 0.0; 5 6 float integerf = 0.0; 7 float driftf = 0.0; 8 9 if (low >= high) 10 { 11 printf("low >= high,rearrange them\n"); 12 getchar(); 13 return; 14 } 15 //--------------------------------------------- 16 17 int integer; //整数部分 18 int decimals; //小数部分 19 20 float diff = high - low; 21 22 integer = (int)(high - low); //取整数部分 23 24 decimals = diff - integer; //取小数部分 25 //--------------------------------------------- 26 27 //1.先计算一个整数偏量值 28 if (integer > 0) 29 30 integerf= (float)(rand() % integer); 31 32 else 33 integerf= 0.0; 34 35 //2.在整数偏量的基础上进行波动 36 do 37 { 38 driftf = (float)(rand() / RAND_MAX);//产生小数 39 40 driftf *= (rand() % 2 == 0 ? 1 : -1); 41 42 } while ((integerf+driftf<0)||(integerf+driftf>diff)); 43 44 45 46 ret_rnd = low+(integerf + driftf) ; 47 48 return ret_rnd; 49 50 51 }
相关文章推荐
- [Node.js] DSL in action
- 利用RANSAC算法筛选SIFT特征匹配
- 客运综合管理系统项目—售票管理(退票)
- jquery加载解析XML文件
- 归并排序
- 关于资源增量更新策略
- MVP for Android
- AOP之代理模式(二)
- 猜测:Oracle ash报告中SQL Text 出现"** SQL Text Not Available **"的原因
- Android应用中遍历Assets的结果
- 兔子--解决EditText的drawableLeft与输入文本的协调问题
- 网络工程师必备素质-IP地址练习题
- Intellij_idea-14官方快捷键中文版
- MySQL主从复制几个重要的启动选项
- matlab中fspecial中生成高斯模板的解释以及c语言实现
- mysql登陆与退出
- 北京络捷斯特第三方物流信息系统技术解析(五) 订单录入-配送订单
- Android实战简易教程-第五枪(ListView用法研究)
- 团队冲刺阶段二第四次站立会议
- wsdl2java 生成webService客户端代码,并读取数据