Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 323 - My Picker Project : arc4randomに関して

Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena

Beginning iPhone Development with Swift: Exploring the iOS SDK

Beginning iPhone Development with Swift: Exploring the iOS SDK

DependentPickerViewControllerクラスで重要なのは、まずボタンを押してランダムに表示が変わるシステムです。

久しぶりにランダム発生の話題が出てきましたが、すっかり忘れています(^_^;)

yataiblue.ashita-sanuki.jp

あの頃は良く分かってなかったですね。

まだキャスティングも初期化処理の意味も分かってなかったんで関数の使い方も納得はできてなかったです。

  1. arc4random()
  2. arc4random_uniform()

arc4random()間数で擬似的にUInt32型の数字が生成して、ランダムの範囲は、余剰を求める方法です。

「arc4random() % 10」にすると「0から9」、「arc4random() % 4」だったら「0から3」になるけど、余りを求める方法は偏りがでてくるのでこれを修正したarc4random_uniform()を使うことを勧めています。

「arc4random_uniform(10)」というように「()」内に範囲を入れればいいんです。

注意点といえば、「型」ですね。生成される整数は「Uint32」になるので、Swiftでお馴染みのInt型と異なります。

しかし、何が違うのでしょう?

googleで調べて参考サイトを2つほど

  1. 乱数(ランダムな値)を生成する - iOSアプリ開発の逆引き辞典
  2. ios - swiftのキャストの言語仕様に関して - スタック・オーバーフロー

この2つのリンクを読むことで、分かったつもりだったキャストも誤解していたことに気がつきました。SwiftのInt型は環境により値が変わるようです。32ビット環境なら32bit、64ビット環境なら64bit。しかしUInt32奈良、32ビット、64ビットどちらの環境でも32bitになります。

今日はランダム数の復習でした。