カテゴリーリスト

バックナンバー

閉じる

フォーシーズ社員専用ブログ

企業理念

企業理念


社是

社是


社訓十ヶ条

社訓十ヶ条

2020.11.09(月)

円周率

[ システム開発部 ]

「東京で木枯らし1号3年ぶり」というニュースを見て、今年は冬らしい寒さになるなと覚悟を決めました。
コロナ禍にあって、事務所では冬でも換気をしていますから例年以上に防寒を意識しようと思います。
私もウルトラライトダウンベストを買ってしまいましたよ。着てみて購入者が多い事が理解できました。
薄いのに暖かくて良く出来ているなと感心です。ちなみに収納袋が内ポケットに入っていることに一週間気づきませんでした。

さて、今回のタイトルは円周率です。
学生時代が思い返されて懐かしいですね。
いったい円周率が人生で何の役に立つんだ?と思っていましたが、残念ながら大人になってからも使う事はありませんでした・・・。
しかし、幸い(?)にも、2年前に初めて使う機会がありました!
円が平面上を移動している時に、現在の座標(x0,y0)に対して1秒後の座標(x1,y1)を算出したかったのです。
ここで円周率を使うことになりました。
え?何がしたかったのかって?それは皆さんおなじみのスクリーンセーバー「バブル」をプログラミングしたかったからに決まっているでしょう!
無数のバブルが画面内で動き回っているのは見ていて飽きないですよね。
見ていると作ってみたくなる性分からいつか作ろうと思っていた流れでの2年前なのでした。
20年以上前に勉強した事はほとんど覚えておらず、ネットで一生懸命復習したのでした。
関連して三平方の定理とかも勉強しました。(ピタゴラスの定理の方が馴染み深い?)
「懐かしい!」に尽きました。

前置きが(本当に)長くなりましたが、今回の題材とは関係ありません(笑)
今回はふと「円周率の3.14ってどうやって計算するんだ?」という疑問がわいたので勉強してみて、実際にプログラムで計算してみました。
細かい理屈は抜きにプログラムを書くとこうなります。
  const R = 100000;
  let c = 0;
  let s = 0;
  for (let y = -R; y < R ; y++) {
    for (let x = -R; x < R ; x++) {
      s += 1;
      if (x * x + y * y <= R * R)
        c += 1;
    }
  }
  let result = 4 * c / s;
なんだかよくわからないとは思いますが、ボリュームだけを見ると意外と少ないでしょう?
これは例えば、「半径が10万メートルの円の外周に接する正方形の中に、1メートル置きの等間隔に人が立った時に、円の内側にいる人は何%になるか」という観点から計算しています。
実行結果は「3.1415925455」となります。知られている円周率は「3.14159265358979」ですので小数第6位までは正しく算出できています。
前述の10万という範囲をより大きくすることで精度が上がっていくのですがコンピューターの計算能力の都合上で10万が限界でした。

プログラムってこういう10万とか、もっと大きなスケールで計算できるので面白いのですよね。
まさにコンピューター=計算機です。
このブログを見て興味を持って頂けた方は今からでも遅くないのでプログラミングを始めてみてください。
小学生や定年退職後に始められる方もいらっしゃるくらいなので誰にでもできるものなのだと思っています。
円周率の暗記に挑戦される方をYoutubeなどでも見ますが、その凄さに比べるとプログラミングは遥かに簡単です。
私は逆にボケ防止の為に暗記の方を始めようかなと思う今日この頃です。

20201109.png
以上、外国人保証のフォーシーズデータセンター木下 のフォーシーズブログでした。

毎日の記事は下記リンクから閲覧できます。

システム開発部の記事は下記リンクから閲覧できます。
« リフレッシュ!   ||   »
ページのトップへ

カテゴリーリスト


最近の記事


バックナンバー

カテゴリーリスト

最近の記事

バックナンバー

ページのトップへ