亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

javascript - js 二維數組交叉取隨機數,如何實現取到的隨機數比較平均?

瀏覽:86日期:2023-02-11 17:07:21

問題描述

有一個二維數組,如何交叉(上下左右不相鄰)取2或3個隨機數?

數組:

var a = [ [0, 1], [2, 3], [4, 5], [6, 7]];

這樣寫了一個,但是感覺很死板,取到的數不太平均而且代碼寫的有點臃腫,大神們有更好的方案嗎?

function select() { var a = [[0, 1],[2, 3],[4, 5],[6, 7] ]; var lastSelect = -1; for (var i = 0; i < a.length; i++) {var index = getRandomNumber(lastSelect, a[i].length);console.log(a[i][index]);lastSelect = index; }}function getRandomNumber(lastSelect, max) { var random = Math.floor(Math.random() * max); if (random == lastSelect) return getRandomNumber(lastSelect, max); else return random;}select()

問題解答

回答1:

條件是上下左右不相鄰。假設起始點坐標為(0,0),那么屏蔽以下點(-1, 0), (0, -1), (1, 0), (0, 1)。這些點的特性是:x的絕對值加y的絕對值等于1。在合理范圍內隨機x,y坐標的值并各取絕對值相加,如果不等于1且之前沒有取過這個坐標即為合法。

回答2:

這里提供一種非常簡單但完全滿足需求的 hack 思路,即故意【交叉著取數】,來達到【上下左右不相鄰】的需求,只需兩行:

function pick (arr) { // 若數組長度為 5,則該下標 x 的范圍為 1~3 // 直接依次取 a[x - 1], a[x], a[x + 1] 中交錯的項即可 // 為了保證不越界而根據數組長度限制 x 取值范圍 const pickedIndex = Math.max( 0, parseInt(Math.random() * arr.length - 2) ) + 1 // 第二維下標交錯著 0 1 取值,達到數字不相交的需求 return [ arr[pickedIndex - 1][0], arr[pickedIndex][1], arr[pickedIndex + 1][0] ]}

標簽: JavaScript
主站蜘蛛池模板: 成人免费淫片免费观看 | 亚洲欧美日韩中文字幕在线 | 久久久国产这里有的是精品 | 亚洲国产欧美一区二区欧美 | 国产精品美女网站在线观看 | 在线视频观看你懂的我的 | 黄色一级毛片看一级毛片 | 国产精亚洲视频 | 3p久久| 青青热久免费精品视频在首页 | 青草国产精品久久久久久 | 色噜噜国产精品视频一区二区 | 成人欧美一区二区三区在线 | 久久精品a一国产成人免费网站 | 精品精品国产高清a毛片 | 黄色片在线观看网址 | 91精品国产闺蜜国产在线 | 嫩草视频在线看 | 麻豆传媒入口直接进入免费 | 在线免费一区二区 | 国产97视频在线观看 | 99九九国产精品免费视频 | 亚洲欧美网址 | 精品视频在线播放 | 高清视频黄色录像免费 | 欧美视频第一区 | v2ba永久地址在线观看 | 日本精品久久久久中文字幕2 | 优女视频免费观看 | 男生福利网站 | 国产免费观看a大片的网站 国产免费观看网站黄页 | 亚洲精品视频网 | 国产在线欧美日韩精品一区二区 | 色影影院 | 三级黄色片a | 91丝袜美腿高跟国产极品老师 | 欧美日韩在线观看免费 | 免费高清a级毛片在线播放 免费高清小黄站在线观看 免费高清不卡毛片在线看 免费高清毛片 | 欧美黑人c黑人做人爱视频 欧美黑人vs亚裔videos | 成熟亚洲妇女毛茸茸的性画廊 | 精品亚洲午夜久久久久 |