查看完整版本: 如何將亂數演算法分成四個人
頁: [1]

qq40415 發表於 2015-12-16 07:39 PM

如何將亂數演算法分成四個人

請問各位大大,如何將已經亂數的A~Z 分給四個人,懇請求解
程式碼如下:


<html>
<head>
<title>Shuffle Demo</title>
<script>
function run() {
    var d = document.getElementById("display");   
    var a = "abcdefghijklmnopqrstuvwxyz".split("", 26);
    var i = a.length;
    while (i) {
        var j = parseInt(Math.random() * i);
        var k = a[--i];
        a = a;
        a = k;
    }
     
    d.innerHTML += a;
}
</script>
</head>
<body onload="run()">
<div id="display"></div>
</body>
</html>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

snowflying 發表於 2015-12-18 03:24 AM

[ 本帖最後由 snowflying 於 2015-12-18 03:24 AM 編輯 ]

要不要先用 包起來呀?
被詮釋成斜體了
而且分給四個人是怎麼個分法?
有什麼地方存放個別拿到的部分嗎?

inunu 發表於 2016-3-2 11:53 AM

分配規則沒講清楚
假設依撲克牌發牌, 從一號輪流到四號循環
<html>
<head>
<title>Shuffle Demo</title>
<script>
function run() {
        var d1 = document.getElementById("display1");
    var d2 = document.getElementById("display2");
    var d3 = document.getElementById("display3");
    var d4 = document.getElementById("display4");
        var d = ;

    var a = "abcdefghijklmnopqrstuvwxyz";
        var step = 0;
       
    while (a.length > 0) {
        // Pick a random character
                var i = parseInt(Math.random() * a.length);
                d.innerHTML += a;

                // Remove character that is assigned to player
                a = a.substr(0, i) + a.substr(i + 1);

                // Next player
                step++;
                if (step >= d.length)
                {
                        step = 0;
                }
        }
}
</script>
</head>
<body onload="run()">
<div id="display1">#1: </div>
<div id="display2">#2: </div>
<div id="display3">#3: </div>
<div id="display4">#4: </div>
</body>
</html>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

Semisphere 發表於 2017-2-1 10:25 PM

本帖最後由 Semisphere 於 2017-2-1 10:27 PM 編輯

原po code中a = a;會複寫a原本的內容,後面會有機會沒辦法亂數再取a內元素出來,得先確認一下。

同樓上也覺得需要先定好分配規則,若隨機排序後直接分4組,那可參考如下code。另我使用Lodash.js處理隨機取出與分組。
<!DOCTYPE html>
<html>
<head>
<title>Shuffle Demo</title>

<script src="使用Lodash.js的cdn連結"></script>

<script>
function run() {
    var d = document.getElementById("display");   
    var a = "abcdefghijklmnopqrstuvwxyz".split("", 26);
    var r = _.shuffle(a);
    var b = _.chunk(r, 7);
    var c = _.join(b,'<br>')
    d.innerHTML = c;
}
</script>
</head>
<body onload="run()">
<div id="display"></div>
</body>
</html>
可能結果如下:
b,q,n,l,d,t,c
m,v,u,k,o,y,h
w,g,s,p,j,e,z
x,f,i,a,r
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]