問:乱数を使って円周率を求めなさい。
出典:YouTubeで紹介されていた技術面接の問題。
2017年にエンジニアからコンサルタントに転職してからもコードは書いていますが、あくまで趣味や自分の業務短縮のためのコードであり、バリバリの開発の最前線でコードを書くことがなくなってしまいした。
それによって「数学的思考能力」が著しく衰えているのを感じたため、最近は時間を見つけてはアルゴリズムの問題を解くようにしています。
今日は、こちらのYouTubeビデオの問題をといてみました。
#!/usr/bin/env python # coding: utf-8 import random def calc_pi(n): total_number_in_circle = 0 total_number_in_square = 0 for num in range(n): x = random.uniform(0, 1) y = random.uniform(0, 1) distance = x**2 + y**2 if distance <= 1: total_number_in_circle += 1 total_number_in_square += 1 pi = 4 * total_number_in_circle/total_number_in_square print(pi) calc_pi(10000000)
解き終わってからビデオの続きを見たのですが、解法が同じで安心しました。
この問題は「半径1の円を描く」という発想が鍵な気がしました。
頭を柔軟に柔らかく、これからも隙間時間で脳の体操を続けたいなと思います。
最後まで読んでいただきありがとうございます。もしこの記事を気に入って頂けたようであればシェアをお願い致します。非常に励みになります。