• ベストアンサー
※ 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にそれぞれランダムな値が入ります。以下のコードを試してみてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • rheda
  • ベストアンサー率30% (3/10)
回答No.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という書き方は、 変数名に、変数を使うんで、 無理だと思います。 まだまだ、短くなると思います。 プログラム上、分からないところも ありますが。 すぐに、気づきましたので。

Flash-love
質問者

補足

早速、ありがとうございます。心強いです。 スクリプトはめっきり弱いので助かります。 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); としてみましたが、取り出せませんでした。どこが問題なのか悩んでいます。

関連するQ&A

専門家に質問してみよう