一些关于概率的算法的个人总结
来源:互联网 发布:js定义数组 编辑:程序博客网 时间:2024/05/22 10:27
第一个大概是我人生中的第一次面试遇到的问题吧。问题如下:如何随机出0~n之间的整数,并且每次随机出的数字不能相等但要求随机出的每个数字的概率是相等的。作为一个初涉计算机(虽然是研究生了,起步略晚)对自己又有极大自信的我,想出了各种方法,然后一一被面试官拍死。面试完后在《编程珠玑》的习题上看到了解法:
构造包含1-100的顺序数组s,数组内的值等于其下标,最大的数是max=100。然后rand(0,max)出一个数字n,之后把s[max]和s[n]交换数据,然后把max减一。后面一次循环,这样可以保证每次取的数字不相等,又能保证概率都相等。如第一次取的话是0.01,那么第二次取的概率根据概率论是第一次的概率乘以第二次的概率即(99/100)*(1/99)=0.01。以此类推,取所有数字的概率都为0.01。
第二个是如何用rand(5)构造rand(n)。这个问题的关键是产生的数字范围要包含0~n,且产生0~n的概率相等。所以要用rand(k)*m+rand(k),这样可以产生0~(km+k-1)的数,且每个数产生的概率都是相等,这样只要km+k-1)是大于n的倍数的某个数,就能得到均匀分布的rand(n)了,所以这一题可用递归。
0 0
- 一些关于概率的算法的个人总结
- 关于一些排序算法的个人总结(初学)
- 关于概率dp的个人理解与总结
- 关于概率dp的个人理解与总结
- 关于sql的一些个人总结
- 关于vim的一些个人总结
- 关于ReentrantLock的一些个人总结
- 关于dijkstra算法的个人总结
- 一些个人的总结
- 关于聚类算法的一些个人想法
- 关于.net中反射的一些个人总结
- 关于程序性能优化基础的一些个人总结
- 关于程序性能优化基础的一些个人总结
- 关于thread中interupt,interrupted,isInterrupted的一些个人总结
- 关于苹果支付ApplePay的一些个人总结
- 个人总结一些关于需要学习的技术
- 关于Activity的一些个人总结,比较散乱。
- 关于static静态的一些知识(个人总结)
- 32位汇编语言学习笔记(24)--HexDump程序
- 第六章:6.1 软件包管理 - 简介
- ExtJs 入门教程十[下拉列表:Combobox]
- 织梦仿站系列教程第五讲——通用头部(一)
- 几个字符串函数指针的实现
- 一些关于概率的算法的个人总结
- 日经春秋 20141228
- 几种排序的性能测试
- Unity4.6中修改RectTransform的宽度和高度
- PHP Pydev Eclipse (linux or mac)
- Hibernate的缓存机制
- 网站下拉界面的实现
- 日经社説 20141228 高浜再稼働に広く地域の声を
- Mac OS切换网络环境后获取对IP为192.254.*.*的解决办法