Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > ランダムに分散する

ランダムに分散する

100あるものを微妙にちらして分割する関数が必要だったのですが、なかったので自作してみました(randiなのかな?)。例えば、100を4つにわけるときに、 25 の4つではなくて、23, 21,17,19 の様に微妙にずれた結果を配列で返す処理です。ソース汚い、、、、。本当は数学で正しい取得方法が あるのかと思いますが、よくわかりませんのでゴリゴリ作成。

参考:指定の平均値と分散をもつ正規分布からの乱数
参考:乱数配列の作成
参考:randi

やってみた

以下関数を実行すると、適当に分散された数値の結果が帰ってきます。



 let divArr:Array = self.devideRandom(300, split: 8, yurep: 5);

 // ランダムに分散する関数
 // target = ターゲットになる元の数字
 // split = 分散する値
 // yurep = ずらすパーセント 0~ 100 %
 func devideRandom(target:Int, split:Int, yurep:Int)->Array{
        
        
        var _total = target;
        var _retArr:Array = Array();
        let _yure = Int( _total / split) * yurep/100;
        let _yuragi:Int = Int(_total / split / _yure);
        let _lastIndex:Int = split-1;
        
        for (var i=0;i < split; i++){
            
            if (i == _lastIndex){
                _retArr.append(_total);
                break;
            }
            
            let _standard = _total/(split-i);
            let _randInt:UInt32 = arc4random_uniform(UInt32(_yuragi));
            let _onoff:UInt32 = arc4random_uniform(2);// + か マイナスか
            
            var ret:Int = 0;
            if (_onoff % 2 == 0){
                ret = _standard + Int(_randInt);
            }else{
                ret = _standard - Int(_randInt);
            }
            
            _retArr.append(ret);
            _total = _total - ret;
            
        }
        
        return _retArr;
    }

 print (divArr);
 以下のような感じに出力されました。
 8
20
67
75
35
14
22
59
 

↓ yure引数を100にした場合(ゆれていない)の配列で分散した場合

サンプル画像

↓ yurep引数を5にした場合(ゆれてる)の配列で分散した場合

サンプル画像

まとめ

人様に見せることができない汚いソースでスイマセン、、、改善してまいります。

↓こんな記事もありますよ!

Facebook SDK のAppEventを検証する

さて、AppEventですが、FacebookのAppを利用したログシステムなのかな。ログをカスタマイズして保存して、 それを解析できる、そんな感じなのかなと思っています。 広告利用の為に、インストールされた数やログの解析によってユーザの動作を確認できるようですので細かく設定できるのではと思います。 まずは上記のようにログを保存する、ログを読み込む、ができるのかを検証してみます

Typealiasをどうやって活用するのか

Typealiasって言葉、なんだややこしく見て見ないふりをしていましたが、 先日別の記事を書いた際にTypealiasの記述がありましたので、あらためて確認してみようと思います。まずaliasですが、 Macでショートカットを作成した時に記載される「エイリアス」です。ショートカットのようなものですので、 Typeのショートカット的な感覚で調査進めてまいります。

WatchKitでウォッチに簡単なラベルを表示してみる

前回の記事ではWatchKitのサンプルの画面キャプチャを紹介しましたので、今回は実際にプロジェクトの作成から簡単なラベルを表示する、 簡単な最初の第一歩までを説明します。AppleWatchの細かい説明は後にしてひとまず動作させてみます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!