코로나 랜덤 점심 그룹 나누기

자바스크립트 랜덤 번호를 이용한 행운권 추출 및 랜덤 그룹 나누기

Posted by 옐란 on 2021-07-23
  • 자바스크립트로 행운권 추출기를 구현하였다. 조금만 응용하면 로또번호 추출기도 가능하다.
  • 또한, 랜덤번호를 이용해 코로나 시즌에 랜덤으로 점심조를 추출할 수 있다!

행운권 추출기

  • 실행 사이트(jsfiddle): https://jsfiddle.net/5k7agrnq/
  • 사용법: publishRandNum(150, 5)에 대상인원과 추출명수를 적고 실행한다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    //번호 추출기
    //MAX_NUM: 추천 인원
    //MAX_ITER: 한번에 추출하는 숫자
    function publishRandNum(MAX_NUM, MAX_ITER){
    var randNumList = "";
    for(var i=0; i<MAX_ITER; ++i){
    jRandNum = Math.random()
    rand_digit = Math.floor(jRandNum * MAX_NUM + 1)
    //alert("jRandNum:"+ jRandNum + ' ,rand_digit:' + rand_digit)

    randNumList += "Seq:" + (i+1) + " ,Num:" +rand_digit+ "<br>";
    }
    return randNumList;
    }

    document.write( '<p>' + "행운권 추첨기" + '</p>' );
    document.write( '<p>' + publishRandNum(150, 5) + '</p>' );

    /* 설정 publishRandNum(150, 5) = 150명 5명 추출
    행운권 추첨기
    Seq:1 ,Num:18
    Seq:2 ,Num:29
    Seq:3 ,Num:20
    Seq:4 ,Num:141
    Seq:5 ,Num:31
    */

    코로나 랜덤 점심 그룹 나누기

  • 실행 사이트(jsfiddle): https://jsfiddle.net/5k7agrnq/
  • 사용법: p_arr에 “”,로 구분하여 사람이름을 적고, publishGroup(p_arr, 4)에 한조에 구성할 최대인원을 적고 실행한다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    let p_arr = [
    "AAA",
    "BBB",
    "CCC",
    "홍길동",
    "아무개",
    "굿굿굿",
    ];
    let r_num = [];
    let p_group = [];

    function checkDup(r_num, new_num){
    for (let n_val of r_num){
    if (n_val === new_num) return true
    }
    return false
    }

    function publishGroup(p_arr, G_NUM){
    var randGroupList = "";

    //get random number (remove dup)
    for(let i=0; ; ++i){
    jRandNum = Math.random()
    rand_digit = Math.floor(jRandNum * p_arr.length)

    if (checkDup(r_num, rand_digit)==false){
    r_num.push(rand_digit)
    }else{ continue; }

    if (r_num.length>=p_arr.length) break
    }
    //alert("r_num:"+ r_num.toString());

    //extract group
    let g_cnt = 1;
    let g_per = [];
    let idx=0;
    for(; idx<p_arr.length; ++idx){
    if (idx!=0 && (idx+1)%G_NUM==0){
    g_per.push(p_arr[r_num[idx]])
    randGroupList += "group:" + g_cnt + " person:" +g_per.toString()+ "<br>";
    g_per = [];
    ++g_cnt;
    }else{
    g_per.push(p_arr[r_num[idx]])
    }
    }

    if (idx%G_NUM!=0){
    randGroupList += "group:" + g_cnt + " person:" +g_per.toString()+ "<br>";
    }

    return randGroupList;
    }

    document.write( '<p>' + "랜덤 그룹 추첨기" + '</p>' );
    document.write( '<p>' + publishGroup(p_arr, 4) + '</p>' );