精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

如何解決JavaScript隨機(jī)數(shù)的組合問題

這篇文章主要講解了如何解決JavaScript隨機(jī)數(shù)的組合問題,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括玉泉街道網(wǎng)站建設(shè)、玉泉街道網(wǎng)站制作、玉泉街道網(wǎng)頁制作以及玉泉街道網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,玉泉街道網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到玉泉街道省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

隨機(jī)數(shù)的組合問題在面試時(shí)是經(jīng)常考的,比如之前我就被問到:“有一個(gè)可以生成1-5的隨機(jī)數(shù)函數(shù),怎樣把它擴(kuò)大到1-7?”

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

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

如何把它轉(zhuǎn)成生成1-5的函數(shù)呢?這很簡(jiǎn)單:在一個(gè)循環(huán)里面調(diào)用random7,直到它的值小于等于5就結(jié)束循環(huán)并返回該隨機(jī)數(shù)即可,如下:

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

上面的思路就是:如果生成的隨機(jī)數(shù)大于5,就繼續(xù)調(diào)用random7,直到它小于等于5為止。好吧,回歸正題,再來看一下1-5如何轉(zhuǎn)成1-7吧。下面是一個(gè)隨機(jī)生成1-5的函數(shù):

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

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

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

這樣確實(shí)可以把1-5的范圍擴(kuò)大到1-7,但是問題來了:所謂隨機(jī)函數(shù),產(chǎn)生的每個(gè)值的概率是相等的,但是上面的方法產(chǎn)生的值概率相等嗎?我們可以使用概率論的組合知識(shí)算岀來:生成1有一種組合,就是random5() + random5() - 1;中的兩個(gè)random5()均是1,生成2有兩種組合,第一個(gè)random5()是1第二個(gè)是2,或者相反。顯然,它們的概率是不等的。所以這種方法是不行的。

為了實(shí)現(xiàn)生成的每個(gè)值的概率是相等的,就是使得每個(gè)值的組合數(shù)相等。一種可行的方法是使得每個(gè)值的組合只有一種,如下:

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

為什么這樣就會(huì)使得各個(gè)值的概率相等呢?首先來看一下(random5() - 1) * 5,容易算岀這個(gè)表達(dá)式生成的可選值是0,5,10,15,20,用它去跟random5()相加,因?yàn)閞andom5()的可選值是1, 2,3,4,5,所以兩者相加之后就會(huì)得到1-25之間的隨機(jī)數(shù),而且產(chǎn)生的每個(gè)值的組合均只有一種,所以它們的概率也是相等的。

也許有人會(huì)問,(random5() - 1) * 5,這里為什么是乘以5而不是其他呢?這是因?yàn)槌艘裕抵蠛蛂andom5()相加,得到的數(shù)是連續(xù)的并且是等概率的。

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

看完上述內(nèi)容,是不是對(duì)如何解決JavaScript隨機(jī)數(shù)的組合問題有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:如何解決JavaScript隨機(jī)數(shù)的組合問題
本文地址:http://m.jcarcd.cn/article/jhhges.html
主站蜘蛛池模板: 国产玉足免费观看 | 午夜伦理 | 成人影片网址 | 中文字幕亚洲无线码 | 国产绿帽视频网站 | 日韩影院 | 国产未成女一区二区 | 国产又黄又粗又猛又 | 最新精品国偷自产在线美女足 | 91po国产在| 午夜爽快乐乐 | 韩国理论片在线看 | 午夜国产一级 | 国产在线青青 | 91色在线观看 | 国产精品视频一区 | 国产白领 | 国产黄大片在线视频 | 国产精品自产拍 | 国产真实破 | 欧美综合网 | 国产精品三 | 国产主播福利 | 97在线看| 国产91剧情| 日韩亚洲综合欧美 | 91免费看片| 国自产偷| 国产精品秋霞 | 国产一区福利在线 | 国产成a人片在线 | 国产精选视频 | 日本一区不卡在线 | 国产原创剧 | 区在线播放 | 日本韩国在线电影 | 国产欧美日本亚洲 | 岛国大片 | 国产极品国产极品 | 国产精品第9页 | 国产福利观 |