- 浏览: 300925 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (272)
- java (42)
- c (49)
- 算法 (29)
- 汇编语言 (3)
- 字符集 (3)
- error (3)
- 搜索引擎 (2)
- 互联网 (18)
- linux (12)
- 网络 (20)
- VMWare (1)
- 面试 (7)
- c++ (55)
- 设计模式 (3)
- db (9)
- office (2)
- FS (1)
- rest (3)
- Ajax (2)
- Spring (2)
- Hibernate (3)
- matlab (1)
- load balancing (8)
- 分布式计算 (2)
- 易语言 (1)
- apache tomcat (1)
- 测试 (1)
- 数据结构 (5)
- 数学 (13)
- 服务器 (9)
- 读后感 (4)
- 好书介绍 (1)
- script (3)
- wordpress (2)
- delphi (21)
- pascal (8)
- xml (3)
- 趣味 (1)
- PHP (3)
- python (13)
- DLL (4)
- openGL (8)
- windows (2)
- QT (28)
- django (7)
- jquery (1)
- 数据挖掘 (7)
- nginx (1)
- js (1)
- mac (1)
- hadoop (3)
- 项目管理 (1)
- 推荐系统 (1)
- html (1)
最新评论
-
晴天1234:
related remove:attention.ibus和u ...
UBUNTU的默认root密码是多少,修改root密码 -
美丽的小岛:
美丽的小岛 写道如上配置好就得了。提示没有OpenGl.dll ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
如上配置好就得了。提示没有OpenGl.dll之类的,再增加入 ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
主要是理清哪两个对象之间的关系,是信号与所有槽的关系或者是槽与 ...
QT之DisConnect -
美丽的小岛:
LPCTSTR类型:L表示long指针 这是为了兼容Windo ...
QString与各种字符串之间的转化
问题描述:
假设我们有一堆数据(可能在一个链表里,也可能在文件里),数量未知。要求只遍历一次这些数据,随机选取其中的一个元素,任何一个元素被选到的概率相等。O(n)时间,O(1)辅助空间(n是数据总数,但事先不知道)。
引例:
5个人抽5个签,只有一个签意味着“中签”,轮流抽签,从很久很久以前我们就认为这个是非常公平的例子,这个应该不用去怀疑吧。如果怀疑了,好吧,看下面的分析:
分析:
设Ai为第i个人抽签抽中事件,P(Ai)表示第i个人中签的概念,依题意得:
第一个人中签概率:P(A1)=1/5;
第二个人中签概率:P(A2)=4/5*1/4=1/5;(因为第二个人是在第一个人选了之后才去抽的,所以,还有4/5是第一个没有选中的,剩下的四个再去抽一个所以是1/4)
同理, P(A3)=4/5*3/4*1/3=1/5;
P(A4)=4/5*3/4*2/3*1/2=1/5;
P(A3)=4/5*3/4*2/3*1/2*1=1/5;
就样,五个人抽到的是等概率的,相信了吧。
总结公式:
java产生随机数的几种方式
1.使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,可以乘以一定的数,比如说乘以100,他就是个100以内的随机。(j2me没有)
2.在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long,这个也是我们在j2me的程序里经常用的一个取随机数的方法。
3.在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内。
一般会用到java.util里面包中的,一个例子:
public class Test { public static void main(String[] args) { java.util.Random r=new java.util.Random(); for(int i=0;i<100;i++){ System.out.println("i="+i+" "+r.nextInt(100)); } } }
结果打印了100个0到100(不包含100)的随机数。
看一下Random类:
还有nextFloat().nextLong()等方法,重点看看nextInt(int n)方法吧,看jdk说明文档。
n - 要返回的随机数的范围。必须为正数。 0 (包括)和 n (不包括)之间均匀分布的 int 值。 IllegalArgumentException - 如果 n 不是正数 |
单遍历取等概率随机数问题求解JAVA实现:
public class Test { public static void main(String[] args) { java.util.Random r=new java.util.Random(); int n= 0 ; int[] a = {12,34,56,78,9,91,87,4,5,62,12,3,41,8,89,541,11,54,36}; int selectNum = 0 ; for(int k : a){ n++ ; if(r.nextInt(n) == 0){ selectNum = k ; } } System.out.println("selectNum:"+selectNum); } }
参考:
http://www.gocalf.com/blog/random-selection.html
http://www.blogjava.net/cool2009/archive/2009/03/15/259882.html
发表评论
-
推荐!国外程序员整理的Java资源大全
2015-12-15 10:14 649本文由 ImportNew - 唐 ... -
jsoup select 选择器
2015-12-09 14:03 945问题 采用CSS或类似jquery 选择器(selecto ... -
xmlbeans问题(深刻)
2015-11-12 23:08 1172运行scomp,路径永远是一个问题; 1.Program ... -
spring配置一个简单的数据连接池(dbcp)
2015-11-12 14:16 7781.文件结构 2.包结构 3.spring.x ... -
java泛型之通配符的使用
2015-11-12 12:15 680转自: http://blog.csdn.net/lone ... -
Ubuntu下安装JDK
2015-05-02 18:42 536安装JDK: 1.下载 http://www ... -
Apriori算法
2014-12-15 12:56 646http://blog.csdn.net/lizhengn ... -
编辑距离算法
2014-08-14 00:02 944字符串编辑距离: 是一种字符串之间相似度计算的方法。给定两个 ... -
八叉树及K-D树的应用和实现
2014-07-31 19:51 21191. 八叉树、k-d树的原理 2. 八叉树、k-d树的应用 ... -
四叉树与八叉树
2014-07-31 19:37 1367前序 四叉树或四元树也被称为Q树(Q-Tree)。四叉树 ... -
Delphi开发DLL,Java调用DLL
2014-01-01 16:40 1298用一个小例子来示范一下,不写文件字。 第一步 第二步, ... -
如何在Java中调用DLL方法<转>
2013-12-30 13:36 701Java语言本 ... -
Java对存储过程的调用方法
2013-05-14 09:29 768//一:Java如何实现对存储过程的调用: // A ... -
自行车往哪个方向行驶? <转>
2013-05-09 12:57 884文章转自: http://www.ma ... -
01虫子问题<转>
2013-05-09 12:26 717来自:http://www.cs.cmu.ed ... -
求数组中重复出现次数大于数组总个数一半的数
2013-04-17 21:39 1369变量设计,一个变量,存数num,另一个存这个数出现的次数ti ... -
约瑟夫环(时间复杂度为n)
2013-04-17 21:20 1786一、 题目描述: 约瑟夫环是一个数学的应用问 ... -
谈谈对象和XML文件的转换 <转>
2013-04-12 14:18 1018很多时候,我们开发 ... -
详解Java解析XML的四种方法<转>
2013-04-12 14:01 918XML现在已经成为一种通用的数据交换格式,它的平台无关性, ... -
不用除法运算符的除法
2013-04-04 09:53 1788题目描述: 给定一数组a[N],我们希望构造数组b [N] ...
相关推荐
本章为绘制等分不同概率转盘,完整代码供学习参考,扩展已详细进行注解。Canvas三重玩法请关注本专栏,不容错过呦,快来关注吧! 此次与均等分等概率转盘抽奖不同的事,每块概率出现均可控。 采取的方法是对const ...
此次与均等分等概率转盘抽奖不同的事,每块概率出现均可控。 采取的方法是对const prizeProbabilities = [0.05, 0.05, 0.05, 0.05, 0.10, 0.2, 0.25, 0.25]; // 各个奖项的概率 进行map() 方法遍历将没数组内每一...
A 中序遍历 B 广度优先遍历 C 深度优先遍历 D 层次优先遍历 33、下列随机算法中运行时有时候成功有时候失败的是(C ) A 数值概率算法 B 舍伍德算法 C 拉斯维加斯算法 D 蒙特卡罗算法 34.实现合并排序利用的算法是...
- 随机数的生成:设置时间种子,并由此生成随机数 - 交叉对象的选择:轮盘赌 - 交叉算法的选择:顺序移位 - 变异算法的选择:顺序移位 / 贪婪倒位 - 参数的选择:由多次实验得出 # Feature - 种群自动扩增 - ...
全书共分12章:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了4个领域的算法,如序列和集合的算法、图算法、几何算法...
该函数值 即适应函数,就是衡量染⾊体对环境适应度的指标,也是反映实际问题的⽬标函数 基本的遗传操作 (1)选择(Select):按⼀定的概率从上代群体中选择M对个体作为双亲,直接拷贝到下⼀代,染⾊体不发⽣变化。...
如果读者采用其他编程语言,例如C++、C#、VB、Java等,根据其语法格式进行适当的修改即可。 《C/C++常用算法手册 》主要定位于有一定C/C++语言编程基础、想通过学习算法与数据结构提升编程水平的读者,也可作为...
LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行...
高效的随机数生成器 共同概率密度的评估 用于计算浮点运算(FLOPS)的例程,对基准测试算法很有用。 实用程序,例如文件名遍历和可变长度参数列表的解析。 图形功能,例如axis_pct和mobile_text (在graphics子目录...
%-- Unknown date --% else p(:,j)=0; end; if maxp(1)(1,j) maxp(1)=p(1,j); end;...linear_index=find(maxp(1)==p(1,:));...[r_index,c_index]=ind2sub(size1,linear_index(1));...solution_medium(k,1)=distance(g(NC,k),c...
1.5.6. 输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数 ....... 116 1.5.7. 输入一个表示整数的字符串,把该字符串转换成整数并输出.............. 118 1.5.8. 给出一个数列,找出其中最长的单调...