ページ 11

変数に連番を代入する方法

Posted: 2017年2月18日(土) 11:09
by りばりー
こんにちは。初めて質問させていただきます。

例えば変数1~変数10の範囲に、1~10までの連番をランダムに代入していく、
という感じのことを考えています。
画像

標準のイベントコマンドの組み合わせでもできることはできるのですが非常に効率が悪いので、
なにか効率的な方法がありましたらご教授願います。

Re: 変数に連番を代入する方法

Posted: 2017年2月18日(土) 11:41
by まっつUP
りばりー様
お世話になります。

以下のスクリプトコマンドを実行することで代入できると思います。
多分他にもっとよい方法があると思いますがひとまずこれを貼っときます。
(スクリプトコマンド)
var a = 1;
var b = 10;
var array = [];
for(var i = a; i <= b; i++){
array[i - 1] = i;
}
for(var i = a; i <= b; i++){
var ai = Math.floor(Math.random() * array.length);
$gameVariables.setValue(i,array[ai]);
array.splice(ai ,1);
}

Re: 変数に連番を代入する方法

Posted: 2017年2月18日(土) 12:01
by 奏ねこま
イベントコマンドの「スクリプト」にて、こんな感じでどうでしょ?

コード: 全て選択

var i1 = 1;     // 変数番号の最初
var i2 = 10;    // 変数番号の最後
var v1 = 1;     // 連番の開始値
var v2 = 10;    // 連番の終了値
var value = Array.apply(null,Array(v2-v1+1)).map(function(v,i){return i+v1});
for(var i=i1;i<=i2;i++){
  var v = value.splice(Math.randomInt(value.length),1)[0];
  $gameVariables.setValue(i,v);
}

Re: 変数に連番を代入する方法

Posted: 2017年2月18日(土) 13:13
by ぶちょー
こんにちは。

私ならこうするという感じのを張り付けておきます。

コード: 全て選択

var i1 = 1;
var i2 = 10;
var min = 1;
var max = 10;
for(var i = i1; i <= i2; i++) {
  var value = Math.randomInt(max - min + 1) + min;
  $gameVariables.setValue(i, value);
}

Re: 変数に連番を代入する方法

Posted: 2017年2月18日(土) 13:20
by 奏ねこま
ぶちょー さんが書きました:こんにちは。

私ならこうするという感じのを張り付けておきます。

要件は「1~10までの連番をランダムに代入していく」なので、
同じ数字が2度出てしまってはダメなのではないでしょうか。

Re: 変数に連番を代入する方法

Posted: 2017年2月18日(土) 13:59
by りばりー
まっつUP様、奏ねこま様、ぶちょー様
回答ありがとうございます!

奏ねこま様の方法で無事に解決いたしました。
御三方の素早く親切な回答に感謝いたします。

Re: 変数に連番を代入する方法

Posted: 2017年2月18日(土) 19:01
by ぶちょー
奏ねこま さんが書きました:
ぶちょー さんが書きました:こんにちは。

私ならこうするという感じのを張り付けておきます。

要件は「1~10までの連番をランダムに代入していく」なので、
同じ数字が2度出てしまってはダメなのではないでしょうか。


うはー、そうですね!
恥ずかしくて穴に入りたい(´・ω・`)