成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【LeetCode】均等概率問題,我有妙招!

開發 前端
在解決算法問題中我們會經常遇到要求均等概率的問題, 以leetcode 470. 用 Rand7() 實現 Rand10() 為例。

[[388414]]

在解決算法問題中我們會經常遇到要求均等概率的問題, 以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

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

現在我們有了過渡函數 Rand2 , 那么我們使用隨機生成4位二進制數那么我就會得到 一個 均等生成 0 ~ 15 的函數

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

上面代碼略蠢,我們用移位的方法優化下, 左移操作符是二進制進位的。

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

那么最終的 Rand10() 函數, 我們只要舍棄掉 10~15 就可以了

  1. function Rand10(): number { 
  2.  let num: number 
  3.  // 使用do while 循環 遇到小于10 的結束循環返回結果,遇到大的繼續 roll  
  4.  do { 
  5.    num = Rand15() 
  6.  } while ( num > 9) 
  7.   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 這兩個數字不想等即可

  1. declare function f(): 0 | 1 
  2. function round01 () : number { 
  3.  let num : number 
  4.  do { 
  5.   num = f() 
  6.   } while ( num == f()) 
  7.  return num 

 總結

 兩道小題都是用二進制位來解決的算法題。解題思路也是兩個大致的方向,一個是把高進制的數拆解成均等的二進制均等概率,然后再組成目標數。另一個是通過升位來構造均等概率。

 

責任編輯:姜華 來源: 前端思維框架
相關推薦

2021-07-26 16:23:13

Windows 10Windows微軟

2010-07-21 11:50:24

telnet亂碼

2010-09-29 14:00:05

2010-10-15 12:21:55

2010-09-27 15:28:27

2017-06-02 13:22:51

WiFi優化無線路由器

2010-06-09 14:55:11

TCP IP協議限制

2009-07-29 19:47:24

過涵信號電纜信號

2010-09-09 10:18:01

2009-11-17 14:41:49

無線路由器

2009-11-18 12:57:22

2009-08-12 09:54:33

災難主機復制

2013-02-22 09:23:42

大數據PaaS

2011-03-07 09:26:37

2009-11-10 10:01:57

家用無線路由器

2011-06-24 14:48:08

英特爾網卡

2012-05-24 16:54:17

Ubuntu 12.0

2012-07-18 10:11:58

Win 7系統盤

2014-07-31 15:44:42

搜狗管理BugCynthia

2018-10-29 15:35:19

路由器寬帶PC端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 偷派自拍 | 日本不卡一区二区三区在线观看 | 午夜小影院 | 久久精品亚洲欧美日韩久久 | 一区二区福利视频 | 三级特黄特色视频 | 国产 日韩 欧美 制服 另类 | 99久久婷婷国产综合精品电影 | 久久综合av | 日韩视频在线免费观看 | 热99在线| 亚洲欧美在线观看 | 中文字幕第一页在线 | 亚洲综合网站 | 欧美日韩视频在线第一区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | h视频在线观看免费 | 日韩亚洲一区二区 | 中文字幕免费视频 | 国产精品国产三级国产a | 99视频在线免费观看 | 久久国产一区 | 韩日一区二区 | 亚洲一区在线观看视频 | 精品欧美一区二区三区免费观看 | 国产福利小视频 | 中文日韩在线 | 中文字幕在线精品 | 日韩成人免费 | 视频一区二区三区中文字幕 | 天天激情综合 | 精品国产一级片 | 国产成人免费视频网站视频社区 | 亚洲国产精品视频一区 | 日韩福利在线 | 精品久久久久久18免费网站 | 国产精品一卡二卡三卡 | 国产精品免费一区二区三区四区 | 日韩电影免费在线观看中文字幕 | 亚洲成人在线免费 | 国产在线色 |