色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

JavaScript隨機數的組合問題案例分析

瀏覽:13日期:2023-10-26 17:35:43

本文實例講述了JavaScript隨機數的組合問題。分享給大家供大家參考,具體如下:

隨機數的組合問題在面試時是經常考的,比如之前我就被問到:“有一個可以生成1-5的隨機數函數,怎樣把它擴大到1-7?”

在解決這個問題之前,先來看看另外一個比較簡單的問題:“有一個可以生成1-7的函數,怎樣把它縮小到1-5?”下面是一個生成1-7函數random7:

function random7() {return Math.floor(Math.random() * 7 + 1);}

如何把它轉成生成1-5的函數呢?這很簡單:在一個循環里面調用random7,直到它的值小于等于5就結束循環并返回該隨機數即可,如下:

function random5() {var r = random7();while(r > 5) {r = random7();}return r;}

上面的思路就是:如果生成的隨機數大于5,就繼續調用random7,直到它小于等于5為止。好吧,回歸正題,再來看一下1-5如何轉成1-7吧。下面是一個隨機生成1-5的函數:

function random5() {return Math.floor(Math.random() * 5 + 1);}

我們現在的目的是要把它擴大到1-7。有一種很自然的想法可能就是:一個random5()產生的隨機數范圍是1-5,那么兩個random5()相加的范圍就是2-10了,再減去1就是1-9了,所以,可以按照上面的思路,在random7里來個循環,如果小于等于7就結束循環并且返回。如下:

function random7() {var r = random5() + random5() - 1;while(r > 7) {r = random5() + random5() - 1;}return r;}

這樣確實可以把1-5的范圍擴大到1-7,但是問題來了:所謂隨機函數,產生的每個值的概率是相等的,但是上面的方法產生的值概率相等嗎?我們可以使用概率論的組合知識算?繢矗荷?桑庇幸恢腫楹希?褪?andom5() + random5() - 1;中的兩個random5()均是1,生成2有兩種組合,第一個random5()是1第二個是2,或者相反。顯然,它們的概率是不等的。所以這種方法是不行的。

為了實現生成的每個值的概率是相等的,就是使得每個值的組合數相等。一種可行的方法是使得每個值的組合只有一種,如下:

function random7() {var r = (random5() - 1) * 5 + random5(); while(r > 7) {r = (random5() - 1) * 5 + random5(); }return r;}

為什么這樣就會使得各個值的概率相等呢?首先來看一下(random5() - 1) * 5,容易算?繒飧霰澩鍤繳?傻目裳≈凳牽埃?擔?0,15,20,用它去跟random5()相加,因為random5()的可選值是1, 2,3,4,5,所以兩者相加之后就會得到1-25之間的隨機數,而且產生的每個值的組合均只有一種,所以它們的概率也是相等的。

也許有人會問,(random5() - 1) * 5,這里為什么是乘以5而不是其他呢?這是因為乘以5之后和random5()相加,得到的數是連續的并且是等概率的。

上面討論的都是特殊情形1-5和1-7之間的轉換,對于其他的一般情形,大家可以自己試試哈。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 在线成人免费视频 | 欧美日韩亚洲综合另类ac | 无圣光福利视频 | 激情一区二区三区成人 | 亚洲资源在线 | 日韩一级高清 | 日韩欧美在线视频一区二区 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | 国产高清在线不卡 | 国产在线拍揄自揄视精品不卡 | 久久影院视频 | 美女张开大腿让男人桶 | 久久免费大片 | 亚洲视频区 | 亚洲高清成人欧美动作片 | 日韩高清欧美 | 日韩欧美中文字幕在线观看 | 欧美精品免费在线 | 日韩欧美视频一区二区三区 | 国产裸体美女视频全黄 | 久草草视频在线观看免费高清 | 可以免费观看欧美一级毛片 | 99在线播放视频 | 国产成人综合一区精品 | 国产亚洲精品aaa大片 | 成人午夜久久 | 免费播放特黄特色毛片 | 久草一级片 | 久久99国产精一区二区三区! | 欧美日韩视频一区二区三区 | 色综合久久88色综合天天提莫 | 亚洲免费中文 | 久久国产精品久久久久久 | 午夜欧美成人 | 91久久香蕉国产线看 | 亚洲成a v人片在线观看 | 在线看片a| 久久国产精品永久免费网站 | 91精品国产美女福到在线不卡 | 男女晚上爱爱的视频在线观看 | 免费一区二区三区四区 |