[D3.js] 로또 출현 번호 추적-3

Words
329
Reading
2 min
8y
Listen to this post
~2 min

[D3.js] 로또 출현 번호 추적-3



지난 시간 post로 로또 출현 번호 추적을 마무리 할까 하다가 이 부분에 핵심인 실제 이 로또 출현 번호 추적을 한 목적이 빠져 있는데 그 부분을 이야기 안하면 좀 아쉬울 것 같아서 사행성 post가 되었지만 그래도 마무리를 하는것이 좋을 것 같아서 이번 post의 핵심 부분을 이야기 하도록 하겠습니다.

1. 무작위 번호 입력창 만들기


<form oninput="aaa(parseInt(a1.value)||0,parseInt(a2.value)||0,parseInt(a3.value)||0,parseInt(a4.value)||0,parseInt(a5.value)||0,parseInt(a6.value)||0)">
  생성 : <input type="text" name ="a1"  maxlength="2" size="2"/>
  <input type="text" name ="a2"  maxlength="2" size="2"/>
  <input type="text" name ="a3"  maxlength="2" size="2"/>
  <input type="text" name ="a4"  maxlength="2" size="2"/>
  <input type="text" name ="a5"  maxlength="2" size="2"/>
  <input type="text" name ="a6"  maxlength="2" size="2"/>
</form>

[결과]

alt

위와 같이 입력폼으로 6개의 랜덤 숫자를 수동으로 입력하게 되고 이 입력된 숫자에 대한 로또 출현 번호를 추적하게 됩니다.

추가로, 출현 횟수 입력창

  <input type="text" oninput="bbb(this.value)" value="1" maxlength="2" size="2"/> 출현

[입력창 결과]

alt

2. 무작위 번호 출현 조회



사전학습의 소스를 위 수동 입력창에서 입력한 값을 비교하도록 수정하면 됩니다.

 function aaa(a1,a2,a3,a4,a5,a6) {
        var StrNumber =a1+","+a2+","+a3+","+a4+","+a5+","+a6;
        chkdata[1]=a1;
        chkdata[2]=a2;
        chkdata[3]=a3;
        chkdata[4]=a4;
        chkdata[5]=a5;
        chkdata[6]=a6;

        document.getElementById("demo1").innerHTML=StrNumber;
        var p = d3.select("body").selectAll("p").remove();
        render(dataset);

    }
    ```
    체크 할 데이터를 입력 폼에서 입력한 값을 chkdata[]에 저장합니다.
    
      data.forEach(function(d){
    var cnt=0;

    for(var i=1;i<7;i++){
      var ch1="n"+i;
      for(var j=1;j<7;j++){
        var ch2="n"+j;
        if(chkdata[i]===d[ch2]){
          cnt++;
        }
      }
    }
```
위 코딩에서 보시는 것처럼 d[]은 지난 로또 당첨 번호 데이터로 이 데이터는 수동으로 입력한 chkdata[]값과 비교해서 일치한 숫자를 카운트를 세게 됩니다. 몇개의 숫자가 일치하는지를 체크하는 부분이지요.

그러면, 수정한 부분을 사전 학습 소스에 대입하면 결과를 살펴보도록 하죠.

[전체소스]


<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
  <script src="https://d3js.org/d3.v4.min.js"></script>
  <title>JS Bin</title>
</head>
<body>
  <form oninput="aaa(parseInt(a1.value)||0,parseInt(a2.value)||0,parseInt(a3.value)||0,parseInt(a4.value)||0,parseInt(a5.value)||0,parseInt(a6.value)||0)">
  생성 : <input type="text" name ="a1"  maxlength="2" size="2"/>
  <input type="text" name ="a2"  maxlength="2" size="2"/>
  <input type="text" name ="a3"  maxlength="2" size="2"/>
  <input type="text" name ="a4"  maxlength="2" size="2"/>
  <input type="text" name ="a5"  maxlength="2" size="2"/>
  <input type="text" name ="a6"  maxlength="2" size="2"/>
  </form>
  <input type="text" oninput="bbb(this.value)" value="1" maxlength="2" size="2"/> 출현

  <div id="demo1" style="background-color:yellow">  </div>
  <div id="demo2" style="background-color:yellow">  </div>

  <script>
    var ch_number  = 0;
    var chk=1;
    var dataset;
    var chkdata = new Array();

    function aaa(a1,a2,a3,a4,a5,a6) {
        var StrNumber =a1+","+a2+","+a3+","+a4+","+a5+","+a6;
        chkdata[1]=a1;
        chkdata[2]=a2;
        chkdata[3]=a3;
        chkdata[4]=a4;
        chkdata[5]=a5;
        chkdata[6]=a6;

        document.getElementById("demo1").innerHTML=StrNumber;
        var p = d3.select("body").selectAll("p").remove();
        render(dataset);

    }

    function bbb(data) {
        chk=data;
        var p = d3.select("body").selectAll("p").remove();
        render(dataset);
    }

    function render(data){      
      var CountNum=0;
      var p = d3.select("body");


      data.forEach(function(d){
        var cnt=0;

        for(var i=1;i<7;i++){
          var ch1="n"+i;
          for(var j=1;j<7;j++){
            var ch2="n"+j;
            if(chkdata[i]===d[ch2]){
              cnt++;
            }
          }
        }
        if(cnt>=chk){
          console.log(d.th+"회 : "+d.n1+","+d.n2+","+d.n3+","+d.n4+","+d.n5+","+d.n6+" 출현 : "+cnt);
          var string = d.th+"회 : "+d.n1+","+d.n2+","+d.n3+","+d.n4+","+d.n5+","+d.n6+" 출현 : "+cnt;
          p.append("p")
           .attr("fill","blue")
           .text(string);
          CountNum++;
        }

      });

      document.getElementById("demo2").innerHTML="횟수 : "+CountNum;

    }

   d3.csv("number.csv",type, function(error,data){
      if (error) throw error;
      dataset=data;     
      render(dataset);
  });

  function type(d){
    d.n1=+d.n1;
    d.n2=+d.n2;
    d.n3=+d.n3;
    d.n4=+d.n4;
    d.n5=+d.n5;
    d.n6=+d.n6;
    return d;
  }

  </script>
</body>
</html>

[결과]

alt

마무리


오늘 다룬 내용은 핵심입니다. 오늘 다룬 내용은 어떤 능력을 가지고 있을까요. 출현 번호 추적 할 수 있다는 것은 여러가지를 생각 할 수 있게 합니다. 자신이 만든 번호가 지금까지의 출현 번호와 어느정도 유사한 패턴을 지니고 있는지 알 수 있습니다.

한번 각 회차 별 일정 숫자가 어느정도 일치하며 반복되어 왔는지 아무 숫자나 입력 해보세요. 꽤 많은 무작위 번호들이 여러번 반복되어 당첨 번호로 출현을 왔다는 것을 알 수 있을 거에요. 이말은 돌려 말하면 자신이 만든 번호가 그 유사한 패턴의 번호ㅗ 만들어 졌는지 그냥 막 숫자인지를 어느정도 나눌 수 있다는 의미입니다. 적어도 자신이 만든 번호가 확률적으로 당첨 될 가능성을 좀 더 높일 수 있다는 의미이기도 합니다.

번호를 무작위 랜덤으로 만들더라도 지금까지 반복 출현되는 번호의 횟수가 많은 번호라면 당첨 될 가능성이 높아진다는 의미이기도 하겠죠. 그런데 실상은 그렇지 못합니다. 결과론적으로 이번주 차 번호로 역 추적을 했을 때 아 이번호가 여러번 반복되었구를 알 뿐 실제는 그 번호대를 맞추기는 어렵습니다.


Sponsored ( Powered by dclick )

dclick-imagead

[D3.js] 로또 출현 번호 추적-3 | Ecency