Google Blockly를 사용하여 원주율 구하기

1924 단어 mathBlockly
이 기사는 Nifty Group Advent Calendar 2018의 12 일째 기사입니다.

요전날 사내의 신입 사원 연수로, 프로그래밍 교육 교재에 대해서 기획·프레젠테이션을 실시했습니다.
그 과정에서 알게 된 Google Blockly에서 원주율을 구해 보겠습니다.

Google Blockly 정보



Google Blockly는 Google에서 제공하는 GUI 작업으로 프로그래밍할 수 있는 OSS입니다.
그림과 같이 마우스 조작으로 도형을 조합함으로써 프로그래밍을 할 수 있습니다.
프로그래밍 지식 없이도 알고리즘을 만들 수 있어 매우 교육에 도움이 될 것 같습니다.



원주율 계산에 대해



원주율을 구하는 방법은 다음과 같습니다.
  • 면적이 1의 정사각형 내의 무작위 위치에 M회점을 친다
  • 원점으로부터의 거리가 1 이하가 된 횟수를 N으로한다
  • 최종적으로 $\frac{4N}{M} $ 가 구하는 원주율이 된다

  • 미세한 이론은 생략하지만, 쿼드엔의 면적과 사각형의 면적의 비율이 쿼드엔의 안팎에 쳐지는 점의 수의 비율과 일치하는 것을 이용하고 있습니다.
    시도 횟수가 많을수록 정확도가 향상됩니다. 덧붙여서, 이와 같이 난수를 사용해 근사치를 구하는 수법을 몬테카를로법이라고 합니다.

    실천



    다음과 같이 블록을 조립했습니다.


    시도 횟수 $M$는 100만 번입니다.
    오른쪽 상단의 실행 버튼을 눌러 결과를 살펴보겠습니다.



    $\pi = 3.14264$ 라고 계산할 수 있었습니다. 100만회의 시도에서는 이 정도의 정밀도가 되는 것 같습니다.

    덧붙여서, 조합한 도형을 실제의 프로그래밍 언어로 변환할 수도 있습니다.
    파이썬의 경우 다음과 같이 출력되었습니다.
    import random
    
    m = None
    n = None
    x = None
    y = None
    
    
    m = 1000000
    n = 0
    for count in range(int(m)):
      x = random.random()
      y = random.random()
      if x * x + y * y < 1:
        n = n + 1
    print((n / m) * 4)
    

    마지막으로



    Google Blockly를 처음 사용해 보았지만 상상보다 훨씬 더 구현할 수있었습니다.
    실제로 코딩을 하지 않아도, 알고리즘이나 프로그래밍적인 사고방식의 학습은 가능하다고 생각합니다.
    오픈 소스이므로 이것을 사용하여 뭔가 만들고 싶네요.

    좋은 웹페이지 즐겨찾기