乱数で発生させた数値を次の乱数で除外することは出来るでしょうか?

116 views
Skip to first unread message

e.zu...@gmail.com

unread,
Apr 30, 2015, 3:07:00 AM4/30/15
to almi...@googlegroups.com
質問させていただきます。

Almightで乱数で発生させた数値を次の乱数で除外することは出来るでしょうか?

例えば、5枚のPNGデータを次々にランダムで表示させたいのですが、
@eval exp="f.hoge = intrandom(0, 4)  で0が出たとします。
その次に intrandom で乱数を発生させる時には0を除外したいのです。
そうして数値がかぶることなく最後まで表示させたいのですが、、、

そういったことが可能でしたらご享受下さい。
宜しくお願いします。

Almightサポート yamashita

unread,
Apr 30, 2015, 5:06:57 AM4/30/15
to almi...@googlegroups.com
御連絡ありがとうございます。
Almightサポートの山下です!
早速ですが方法のひとつの例として下記をご参照下さい。
function randomIndex(n){
    var i, j, tmp, a = new Array(n);
    a[0] = 0;
    for(i = n - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i+1));
        tmp = a[i] || i;
        a[i] = a[j] || j;
        a[j] = tmp;
        a;
    };
    return a;
}


@eval exp="tf.num= randomIndex(5)"
@eval exp="tf.hoge1='ほげ'+tf.num[0]"
@eval exp="tf.hoge2='ほげ'+tf.num[1]"
@eval exp="tf.hoge3='ほげ'+tf.num[2]"
@eval exp="tf.hoge4='ほげ'+tf.num[3]"
@eval exp="tf.hoge5='ほげ'+tf.num[4]"

@image storage="&tf.hoge1" layer=0 page=fore

最初のほうで各配列に数字をランダムで入れます
その後、ファイル名と各配列の数値と合体させて変数にいれます
imageタグでその変数を読み込めば、数字がかぶることなく読み込めますのでお試し下さい。
宜しくお願い致します。

e.zu...@gmail.com

unread,
May 1, 2015, 6:21:23 AM5/1/15
to almi...@googlegroups.com
返信有難うございます。

自分でも調べてみましたが色々なパターンが有るのですね。
これを基に自分のゲームに組み込んでみます。

e.zu...@gmail.com

unread,
May 14, 2015, 4:31:21 AM5/14/15
to almi...@googlegroups.com
サポート様

自分のゲームに組み込みちゃんと動作するのを確認しました。
有難うございます。

付随する質問なのですが、今回のスクリプトで乱数の範囲は選択できるのでしょうか?

例えば、連番のPNGデータが50あるとして、シーン1では10〜20のデータ、シーン2では20〜40の
データを重複することなくランダム表示する、といったことです。

そういったことが可能でしたらご享受下さい。
宜しくお願いします。

ひこうけいろ

unread,
May 15, 2015, 1:56:00 AM5/15/15
to almi...@googlegroups.com
横からすいません
こうすれば20から25の範囲の数字をランダムにかぶらずにいけると思いますよ!
[iscript]
function randomIndex(n,s){

    var i, j, tmp, a = new Array(n);
    a[0] = 0+s;

    for(i = n - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i+1));
        tmp = a[i] || i+s;
        a[i] = a[j] || j+s;

        a[j] = tmp;
        a;
    };
    return a;
}
[endscript]

@eval exp="tf.num= randomIndex(5,20)"

e.zu...@gmail.com

unread,
May 18, 2015, 12:25:00 AM5/18/15
to almi...@googlegroups.com
返信有難うございます。

試してみたらそのように動作しました。
てっきりMath.randomの方で範囲を記すのかと思ってました。

ひこうけいろ

unread,
May 18, 2015, 12:49:04 AM5/18/15
to almi...@googlegroups.com
あくまで私個人のやり方なので、Math.randomのほうで試して貰って、いけるんだったらそっちでも良いと思いますよ!
Reply all
Reply to author
Forward
0 new messages