まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

ランダムなタイミングで何かする・ランダムな間隔で何かする

ランダムなタイミングで何かすることと、ランダムな間隔で何かするというコードを書いてみました。
ランダムな間隔で何かする、のほうはわりと力技で、他に良い方法がある気がします。

まずランダムなタイミングで何かする。例えば、ボタンを押してからランダムなタイミングでイベントが起こるみたいな例です。
ボタンを設置しておいてから、結びつけておきます。

@IBAction func timeBtn(sender: AnyObject) {
        
        
        //0-30秒ランダム
        let random = arc4random() % 30
        var doubleRandomNum: Double = Double(random)
        //遅らせる処理
        let delay = doubleRandomNum * Double(NSEC_PER_SEC)
        var time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
        dispatch_after(time, dispatch_get_main_queue(), {
            println( "ザ・ワールド" )
        })

        
    }

ランダムな間隔で何かするのほうです。1秒ごとにランダムな数値を吐き出し、条件分岐で処理を行わせることで
ランダムな間隔で文字を出力しています。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
//1秒ごとにupdate()の中身を繰り返し処理を行う
        var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
           }


func update() {
        
        //0から10までのランダムな数値を出力=0から10秒までのランダムな時間を出力
        let random2 = arc4random() % 10
        
        switch random2 {
//2秒のとき
        case 2:
           println("承太郎「そして時は動き出す」")
//5秒のとき
        case 5:
           println("ディオ「そして時は動き出す」")
        default: //どこにも当てはまらない場合の処理、必ず書く
           break
      
    }
    }