- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列を使って、ランダムな値を複数作りたい)
配列を使ってランダムな値を複数作成する方法
このQ&Aのポイント
- MAC_OSXでFlash8を使用しています。配列を使って4つの値をランダムに出力し、変数spd1〜spd4に格納したいですが、うまくいきません。現在のコードは、randomListという配列に[1,2,3,4]を格納しており、forループを使用してランダムな値を取得しています。しかし、traceしても値が表示されません。
- 問題はspdbanという変数にあります。現在、変数spdをspdbanに代入しているため、値が上書きされてしまいます。変数spd1〜spd4に値を入れるにはどうしたらいいでしょうか?
- 解決策として、forループ内でspdNumに値を代入し、spdbanにspdNumを格納するようにするという方法があります。これにより、spd1〜spd4にそれぞれランダムな値が入ります。以下のコードを試してみてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 spd=spdNumまでで、 spdには、randomListのどれかが、 入っていると、仮定します。 spd1に値を入れるには、 spd1=xx とする必要があります。 このプログラムには、それがありません。 したがって、もともと、spd1という変数が ないので、traceできないはずです。 ここでは、 spd=new Array(); としておいて、 forの中で、 spd[i]=spdNum とすれば、 trace(spd[1])~trace(spd[4]) で、取り出せるはずです。 "spd"+i=spdNumという書き方は、 変数名に、変数を使うんで、 無理だと思います。 まだまだ、短くなると思います。 プログラム上、分からないところも ありますが。 すぐに、気づきましたので。
補足
早速、ありがとうございます。心強いです。 スクリプトはめっきり弱いので助かります。 spd = new Array(); randomList = new Array (1, 2, 3, 4); for (i = 1; i <= 4; i++) { pos = Math.floor (Math.random () * randomList.length); spdNum = randomList[pos]; spd[i] = spdNum randomList.splice (pos, 1); } trace (spd1); trace (spd2); trace (spd3); trace (spd4); としてみましたが、取り出せませんでした。どこが問題なのか悩んでいます。