我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么解决均等概率问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么解决均等概率问题

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

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

  • 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。

  • ⚠️ 不讨论最优解,只讨论算法思路 看到均等概率的问题, 我们最先要想到转成2进制来处理,思路是让均等概率转换成均等概率出现0和1, 再由 0 和 1  ,增加位数来处理均等概率的其他数。拆解下上面的题目 我们使用 Rand7 转成 Rand2 。让 Rand2 的返回结果均等的出现 0 和 1,  我们可以用4位二进制数来生成包含 0 ~ 15 的数。舍弃 10~15,保留 0 到 9 ,结果加1 就是 1~ 10的随机数。

第一步转化二进制函数

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  }

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

  • 给一个随意函数f,以P概率返回 0 , 以 1-P 的概率返回1 这是你唯一可以使用的随机机制,如何实现等概率返回 0 和 1

  • 思路还是用二进制升位的方式, 0 的概率是 P 1 的概率是 1- P

可以得出 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 }

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么解决均等概率问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Bitblt效率问题怎么解决

要提高BitBlt的效率,可以考虑以下几个方面的优化:减少图像的复制次数:BitBlt会将源图像的像素复制到目标图像中,这个过程涉及到大量的内存复制操作。可以尽量减少图像复制的次数,例如通过合并多个复制操复制操作,或者通过缓存图像数据来避免
Bitblt效率问题怎么解决
2024-02-29

负载均衡带宽问题怎么解决

解决负载均衡带宽问题可以从以下几个方面入手:1. 增加带宽:可以联系网络服务提供商,升级带宽套餐或者增加带宽容量,以提高网络传输速度和负载均衡的效果。2. 优化负载均衡算法:采用更加优化的负载均衡算法,合理地分配流量和负载。常见的负载均衡算
2023-09-01

负载均衡能解决什么问题

负载均衡(Load Balancing)可以解决以下问题:1. 高并发访问:当一个服务器无法承载大量并发请求时,负载均衡可以将请求分发到多个服务器上,以分担服务器的负载,提高系统的并发处理能力。2. 单点故障:当一个服务器发生故障时,负载均
2023-09-07

MySQL中不等号索引问题怎么解决

这篇文章主要介绍“MySQL中不等号索引问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中不等号索引问题怎么解决”文章能帮助大家解决问题。在MySQL中,不等号<>在主键字段和唯
2023-07-05

python多线程效率低问题怎么解决

Python中的多线程效率低的问题主要是由于Python的全局解释器锁(GIL)导致的。GIL是Python解释器中的一个机制,它确保同一时刻只有一个线程执行Python字节码。要解决Python多线程效率低的问题,可以考虑以下几种方法:1
2023-09-04

怎么在golang中利用Sync.WaitGroup解决等待问题

怎么在golang中利用Sync.WaitGroup解决等待问题?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。golang适合做什么golang可以做服务器端开
2023-06-14

java接口异步不等待问题怎么解决

在Java中,可以使用多线程和回调函数来解决接口异步不等待的问题。一种常见的解决方法是使用线程池和Future对象。首先,将接口的调用放在一个Callable对象中,并将该对象提交给线程池执行。然后,通过调用Future对象的get()方
2023-10-24

ubuntu正在等待缓存锁问题怎么解决

Ubuntu等待缓存锁问题可能是由于系统中的某个进程正在使用缓存锁,导致其他进程无法访问该锁。要解决这个问题,可以尝试以下方法:等待一段时间:有时候系统只是需要一些时间来解除缓存锁定。等待一段时间后,您可以再次尝试运行命令或操作,看看问题是
ubuntu正在等待缓存锁问题怎么解决
2024-02-29

Python+OpenCV怎么解决彩色图亮度不均衡问题

这篇文章主要介绍“Python+OpenCV怎么解决彩色图亮度不均衡问题”,在日常操作中,相信很多人在Python+OpenCV怎么解决彩色图亮度不均衡问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pyt
2023-06-22

PHP中浮点数不相等的问题怎么解决

这篇文章主要介绍“PHP中浮点数不相等的问题怎么解决”,在日常操作中,相信很多人在PHP中浮点数不相等的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中浮点数不相等的问题怎么解决”的疑惑有所
2023-07-05

怎么解决win10系统磁盘占用率高问题

这篇文章将为大家详细讲解有关怎么解决win10系统磁盘占用率高问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、按下Win+R,然后输入services.msc 回车。如图所示:2、打开服务界面,在服
2023-06-28

win10显示器超出频率限制问题怎么解决

如果您的Windows 10显示器超出频率限制,您可以尝试以下解决方法:1. 重启电脑:有时候只需简单地重启电脑即可解决显示器超出频率限制的问题。2. 进入安全模式:在启动电脑时按下F8或Shift键,选择进入安全模式。在安全模式下,您可以
2023-09-15

Java数组、字符和等差数列问题怎么解决

这篇文章主要讲解了“Java数组、字符和等差数列问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java数组、字符和等差数列问题怎么解决”吧!题目一 解法class Solutio
2023-06-29

Java中Map循环遍历的效率问题怎么解决

在Java中,Map的循环遍历可以通过使用不同的方法来提高效率:1. 使用entrySet()方法遍历:遍历Map的entrySet()集合,而不是使用keySet()或values()方法。这是因为entrySet()方法会返回一个包含键
2023-08-15

nginx负载均衡访问慢怎么解决

如果使用Nginx进行负载均衡访问慢,可能是由于以下一些原因导致的:1. 后端服务响应慢:检查后端服务器的负载情况、网络连接状况以及服务器性能。确保后端服务能够及时响应请求。2. 负载均衡算法选择不合适:Nginx提供了不同的负载均衡算法,
2023-09-07

怎么解决删库问题

本篇内容介绍了“怎么解决删库问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!初探案发现场来看看小林写的垃圾代码,是如何引发这次的删库。既然
2023-06-01

linux ftp530问题怎么解决

这篇“linux ftp530问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux ftp530问题怎么解决
2023-03-14

Hibernate session问题怎么解决

这篇文章主要介绍“Hibernate session问题怎么解决”,在日常操作中,相信很多人在Hibernate session问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate s
2023-06-17

编程热搜

目录