• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FlashLite1.1(as1)の質問です。)

FlashLite1.1(as1)でのランダムな数字の重複

このQ&Aのポイント
  • FlashLite1.1(as1)を使用した携帯Flashゲームの書籍の勉強中に、ランダムな数字の重複に関する質問があります。
  • 質問文章では、特定のコードの部分がわかりません。forループの中で、ランダムな数字が重ならないようにするために、2つの数字を比較しています。
  • プログラム初心者のため、質問が要領を得ていないかもしれませんが、どなたか教えていただけると助かります。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

わからないのは当然だと思います。 元からそのスクリプト(プログラムの考え方)が間違っています。 (間違っているものの説明などできない(する気はしない)ので説明は省略しますが。) スクリプトが間違っていることの実証として m_kazu を 4 固定として下のコードで確かめてみました。 //-------------------------- m_kazu = 4; for (i=1; i<=m_kazu; i++) { /*出現する場所をランダムにしてmyNumberに格納*/ eval("myNumber" add i) = random(9)+1; /*ランダムな数字が重ならないように*/ for (j=1; j<=m_kazu; j++) { while (eval("myNumber" add i) == eval("myNumber" add (i-j))) { eval("myNumber" add i) = random(9)+1; } } } trace(myNumber1 add myNumber2 add myNumber3 add myNumber4); //-------------------------- 上記スクリプトの20回試行で trace 出力より次のようなデータが得られました。 5343←× 8719 5643 1378 2375 9878←× 7685 3512 3647 4578 3615 9514 2183 2495 2779←× 5432 8667←× 8527 7954 9286 同じ数字が出にくくなっているだけのことで実際には同じ数字は出ます。 (また無限ループ(半無限ループ)に陥る可能性も秘めています。) こんなのダメでしょう。   Flash Lite 1.x には function や Array などはありませんからそのままは使えませんが 次のページを参考にする(考え方だけを盗む)と良いと思います。 「FN0212003 - 配列を偏りなくランダムに並替える - Flash テクニカルノート」 http://www.fumiononaka.com/TechNotes/Flash/FN0212003.html

korinakkum
質問者

お礼

BlurFiltanさま わかりやすく解説してくださってありがとうございます! 参考リンクのテンプも本当にありがとうございます!! 読みながら勉強してみます。 BlurFiltanさまのほかの方への回答もとても丁寧でわかりやすいので いつも参考にさせていただいています。 ありがとうございました!

関連するQ&A

専門家に質問してみよう