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にした場合(ゆれてる)の配列で分散した場合

サンプル画像

まとめ

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

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

CoreTextでTextViewの一文字の向きを変える(解決前)

TextViewの文字を縦書きにしたいなぁと考えている時にCoreTextとNSMutableAttributedStringの二つのどちらかなら実装できそう。CoreTextを利用してトライして無理ならAttributedStringをトライしてみます。

Rebuildfm(Poadcast)の技術話+オタ話が超絶に面白い、、、、、

去年の暮れ頃から聞いているPodcastを紹介します。IT企業の友人から「RebuldFM」が面白いよ〜と、私が Swiftサラリーマンを始めたことでSwiftの話をしてたら「知ってる知ってる」との話になって、どこで聞いたの? 「Rebuldfm」ってPodcastがあるんだよ、と。

UIFontのフォント一覧をWebViewで表示させてそれをキャプチャ保存する

文字フォントがわかっても実際の文字がわかりませんので、 WebViewに出力させて、その結果を端末のPhotoアルバムに保存させる処理をつくってみました
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!