028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

怎么解决均等概率问题

本篇内容介绍了“怎么解决均等概率问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

萨迦网站建设公司创新互联,萨迦网站设计制作,有大型网站制作公司丰富经验。已为萨迦数千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的萨迦做网站的公司定做!

在解决算法问题中我们会经常遇到要求均等概率的问题, 以leetcode 470. 用 Rand7() 实现 Rand10() 为例。

第一步转化二进制函数

Rand7() 的结果是均等概率 出现 1,2,3,4,5,6 拆解下就是 均等概率出现 1,2,3 和 4,5,6 当出现 1,2,3 的时候返回 0  ,当出现 4,5,6 的时候返回 1

declare function rand7(): number function Rand2(): number {  return Rand7() > 3 ? 1 : 0 }

现在我们有了过渡函数 Rand2 , 那么我们使用随机生成4位二进制数那么我就会得到 一个 均等生成 0 ~ 15 的函数

function Rand15(): number {  return Rand2() * 2 * 2 * 2 + Rand2() * 2 * 2  + Rand2() * 2  + Rand2() }

上面代码略蠢,我们用移位的方法优化下, 左移操作符是二进制进位的。

function Rand15(): number {  return (rand2() << 3) + (rand2() << 2)  + (rand2() << 1)  +  (rand2() << 0) }

那么最终的 Rand10() 函数, 我们只要舍弃掉 10~15 就可以了

function Rand10(): number {  let num: number  // 使用do while 循环 遇到小于10 的结束循环返回结果,遇到大的继续 roll   do {    num = Rand15()  } while ( num > 9)   return num + 1 // 别忘记 + 1  }

这道题解决完了, 再来一道题,思路也是用二进制均等概率的。

可以得出 00 的概率是 P*P , 11 的概率是 (1-P) * (1-P) 01 的概率是 P * (1-P) 10 的概率是 (1-P) * P  而这两个是相等的(交换率)

那么我们只要 保留 01 和 10 舍弃 00 和 11 就会获得均等概率 P * (1-P)

10 和 01 这两个数字不想等即可

declare function f(): 0 | 1 function round01 () : number {  let num : number  do {   num = f()   } while ( num == f())  return num }

“怎么解决均等概率问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


网页题目:怎么解决均等概率问题
URL标题:http://www.tsicrk.com/article/jecepg.html

其他资讯

让你的专属顾问为你服务

0.6014s