博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机选数算法
阅读量:6114 次
发布时间:2019-06-21

本文共 1255 字,大约阅读时间需要 4 分钟。

detail:

1 package cn.edu.buaa.randomSelectAlgo; 2  3 /** 4  * 等概率从n个数中随机选取m个数,概率为m/n。适用于数据能一次全读入的场景. 5  *  6  */ 7 public class Main_RamdomSelectAlgo { 8     static int[] data = { 5, 6, 7, 8, 9, 1, 2, 3, 4 }; 9     static int[] selectCount = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };10     static int loopCount = 1000_000;// 测试次数,为1次时打印结果即为选取结果11 12     public static void main(String[] args) {13         // TODO Auto-generated method stub14         for (int i = 0; i < loopCount; i++) {15             randSelect(data, 5);16         }17         for (int i = 0; i < selectCount.length; i++) {18             System.out.print(selectCount[i] + ", ");19         }20     }21 22     static boolean randSelect(int[] data, int selectNum) {23         int nSize = data.length;24         if (nSize < selectNum || selectNum < 0) {25             return false;26         }27         for (int i = 0, iSize = nSize; i < iSize; i++) {
// 遍历一遍数据28 double tmpRamNum = Math.random();29 if (tmpRamNum <= (double) selectNum / nSize) {30 // data[i] is selected31 selectCount[i]++;// 被选数被选次数加1,初始为032 selectNum--;33 }34 nSize--;35 }36 return true;37 }38 }
View Code

 

参考资料:

转载地址:http://vdvka.baihongyu.com/

你可能感兴趣的文章
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
Java 内存区域和GC机制
查看>>
更新代码和工具,组织起来,提供所有博文(C++,2014.09)
查看>>
HTML模块化:使用HTML5 Boilerplate模板
查看>>
登记申请汇总
查看>>
Google最新截屏案例详解
查看>>
2015第31周一
查看>>
2015第31周日
查看>>
在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。...
查看>>
Oracle 如何提交手册Cluster Table事务
查看>>
BeagleBone Black第八课板:建立Eclipse编程环境
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
文件类似的推理 -- 超级本征值(super feature)
查看>>
【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用...
查看>>
各大公司容器云的技术栈对比
查看>>
记一次eclipse无法启动的排查过程
查看>>
【转】jmeter 进行java request测试
查看>>
读书笔记--MapReduce 适用场景 及 常见应用
查看>>
SignalR在Xamarin Android中的使用
查看>>