コース: Objective-C 基本講座

今すぐコースを受講しましょう

今すぐ登録して、23,200件以上登録されている、業界エキスパート指導のコースを受講しましょう。

乱数・キャストを使う

乱数・キャストを使う - Objective-Cのチュートリアル

コース: Objective-C 基本講座

乱数・キャストを使う

このレッスンではコンパイラ指令の define と if の使い方を紹介します まず例としてお見せするソースコードは モンテカルロ方で円周率を求めるものです これは半径 R に接する円の正方形内に 点をでたらめに打ったならば その点が円の中に打たれる確率は 正方形の面積分の円の面積と同じだろうという 所から円周率を求める方法です 興味がある人は画面を止めて式を見直しても 構いませんが 速い話が適当に点を打てば円内だった点の数を 打った点の数で割って4倍すると 円周率が求まるという話です プログラムにすると次のようになります まず円内の点の総数を0に初期化しておき 予め決めておいた点の総数分ループします ループの中では毎回無作為に 点を打つ位置を決定し 点が円内だったなら円内の点の総数を 1つ増やす これで円周率が求まります 無作為に点の位置 X Y を決定するのに 使っている arc4random 関数は 呼ばれる度に規則性の無い でたらめな数を戻します 一般にこの様な規則性のないでたらめな数の 連続を乱数列と呼びます 乱数列の各要素を乱数を呼びます 打つ点の総数 TRYCOUNT は 本来変数で持つべきですが 今回は学習目的で define を使ってみます define は#が付いているので コンパイラへの指令です そのため最後に セミコロンを付ける必要はありません 改行までが1命令と見なされます コンパイラはソース中で define の後に続く単語に出会ったら その単語をその後に続く単語に置き換えます 次に無作為に点の位置を X Y に決定するに 使っている arc4random 関数を説明しましょう arc4random は乱数 厳密には疑似乱数を戻す関数です この関数を使うときは stdlib.h をインクルードします 戻り値の範囲は 0から2の32乗−1となります これは32ビットすべて正の数側に使った時に 記憶できる最大値でそのため 戻り値の型も32ビット すべて正の数側に使った整数型である u_int32_t が指定されています しかしそうなるとその値を座標にして 点が円内かどうか調べるために ピタゴラスの定理で計算しようとすると 型として記憶できる範囲を 超える可能性が出てきます そのため X Y は double 型の変数にして…

目次