【新サービス告知】いつでもどこでもイベントを開催できる。スマホのWebカメラを利用したVRイベントスペースサービス(Meetatcube.com)
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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

サンプル画像

まとめ

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

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


2021-04-22 14:54:53

かっこいいカルーセル厳選3点!WebGLを使った渋い画像スライダー。

昨日カッコいいスライダーを探す旅にでていました。 よく使われるswiper など、シンプルで使いやすくデザインも良いのですが、何かもの足りない、、、。 そこで調べていくと、webglを使...

2021-04-20 14:46:43

Twillioとは何??skywayとは何が違うのか。webrtcを使う際に判断する情報。

先日webrtc開発で「twillio」といった名前を聞きました。 以前自分でskywayを使ってwebrtcを試していた際に調べた時には、無かったような気もするんだけと、KDDIが絡んでいる...

2021-04-19 13:58:21

先日久々にアップデートした妊娠週刊パパのAndroid版も。アカウント移管したいんだけど、注文ID見当たらないよ。

先日の妊娠、出産、育児関連のアプリ「妊娠週刊パパ」をAndroid studioで再リリースしようと思ってるんだけど、コンパイル失敗してエミュレータで動かせない。 多分sdkとかapiのバージ...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!