鍍金池/ 問答/HTML5  HTML/ js隨機(jī)取數(shù)問題

js隨機(jī)取數(shù)問題

一個30個數(shù)的數(shù)組,每次隨機(jī)取6位,第一次必須的數(shù)一定有0,1,2; 總共取5次,全部取完,也是為了讓每個數(shù)字都取到。5次之后又重新開始取數(shù)。
這個怎么實(shí)現(xiàn)呢??
用JavaScript實(shí)現(xiàn)。

回答
編輯回答
胭脂淚

思路
第一次有 0 1 2 那隨機(jī)數(shù)就的從3 - 29 開始算 第一次獲取3個隨機(jī)數(shù)
然后至于0 1 2 排序什么的看你 給使用者錯覺感,是隨機(jī)數(shù)
然后6-29就可以依次隨機(jī)獲取 6個隨機(jī)數(shù)

2017年2月11日 14:06
編輯回答
別瞎鬧

這是我的一點(diǎn)兒小想法,直接復(fù)制粘貼運(yùn)行便可看到效果,至于獲取之后再次重新獲取,把生成數(shù)組的那個循環(huán)放在一個函數(shù)里面重復(fù)調(diào)用即可:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
</body>
<script>
    var originArr = []; //源數(shù)組
    for (var i = 3; i < 30; i++) { //生成3-29的數(shù)組  因?yàn)?,1,2要放在第一個數(shù)組里面,所以我這兒就這么做的
        originArr.push(i);
    }
    var result = []; //結(jié)果數(shù)組
    for (var j = 0; j < 5; j++) {
        result.push(buffArr(j));
    }
    console.log(result);

    function buffArr(count) {
        //這里默認(rèn)沒有管0,1,2的順序,就放在前面,自己有想法可以再次上面進(jìn)行更改!
        var buff_arr = count === 0 ? [0, 1, 2] : [];
        for (var i = buff_arr.length; i < 6; i++) {
            var randIndex = Math.floor(Math.random() * originArr.length);
            buff_arr.push(originArr.splice(randIndex, 1)[0]);
        }
        return buff_arr;
    }
</script>
</html>

希望我的回答對你有所幫助!

2018年6月12日 07:51
編輯回答
遺莣
const dig = function* (n, size, head) {
  let arr = Array(head).fill(1).map((t,i) => i).concat(Array(n - head).fill(1).map((i,index) => index + head).sort(() => Math.random() - .5))
  while (arr.length) {
    yield arr.splice(0, 6).sort(() => Math.random() - .5)
  }
}

clipboard.png

2018年1月25日 19:29