• 締切済み

Math.random がNaNになる理由

amanojaku1の回答

回答No.5

>そもそもMath.random() * a[i]自体がループの外で実行してもNaNになってしまうので困ってます。ループの外で実行しているのでMath.random() * 10になっているはずですが、NaNになってしまいます。 プログラムが どうなっているのか分からないと回答のしようがありません。

natyo4235
質問者

お礼

本当にばかげた間違いでしたorz お付き合いいただきありがとうございました。

関連するQ&A

  • Javaについてすこし教えてください。Math.random()につい

    Javaについてすこし教えてください。Math.random()についてです。 例えばint iに0から51までのランダムな数を入れたいときはとりあえずint型にキャストするとして i=(int)(Math.random()←ここからどういった感じにすれば良いのでしょうか? そもそもMath.randomの使い方がいまいち分かりません。 教えてください><

    • ベストアンサー
    • Java
  • Math.randomは0にはならない? 0になる

    ・意味が分からないコードがあるので教えてください ■コード for (var i = 0; i < 10; ++i) {  switch ((Math.random() * 4) | 0) {  case 0: hoge(); break;  case 1: …… ■質問 ・これはどういう処理をするコードでしょうか? ・「Math.random … 0 以上1未満」ということは0にはならないのでしょうか? なぜ「 | 0」? ・breakした場合、switchは抜けるけど、for文は継続?

  • randomで

    4桁の数字をランダムで出したいのですが、たまに2桁になったり3桁になったりします。どうしたらいいでしょうか・・。 class Number{ public static void main(String [] args){ double a; for(int i=1;i<=10;i++){ a = Math.random()*10000; System.out.print((int)a); } } }

    • ベストアンサー
    • Java
  • ActionScript 初心者です。Math.floorについて

    すみませんが教えて下さい。 参考書より 「-10~10までの範囲の整数値」であれば、小数部分を切り捨てるMath.floor()メゾットを使って「Math.floor(Math.random()*21)-10」となります。 Marh.random()が0だと「Math.floor(Math.random()*21)」の部分は「Math.floor(0*21)」となり0になります。 つまり「Math.floor(Math.random()*21)-10」の最小値は-10になります。 Math.random()が約1だと「Math.floor(Math.random()*21)」の部分はMath.floor(1*21)となり、約21(20.99999999・・)の少数部分を切り捨てて20になります。したがって「Math.floor(Math.random()*21)-10」の最大値が10になることが分かります。 とありますが、いろいろ調べても概念がさっぱりわかりません。 詳しい方、噛み砕いて教えて頂けるととてもありがたいです。 こんな質問ですみません。よろしければよろしくお願い致します。

    • ベストアンサー
    • Flash
  • 0から99の数字をランダムに並び替えたいのですが・・

    0から99までの数字をランダムに並び替えて、  89 42 19 35 2 94 12 .... のような数字の列を得たいのですが、どうすればよいでしょうか?一見、簡単そうなのですが、つまずいています。 最初思いついたのは次の方法です。 以下を i=0 から i=99になるまで繰り返す。 (1) tmp = (int) 100 * Math.random(); と 0~99の乱数を発生させる (2) a[0]~a[i-1]の中にxと同じ値が無ければ a[i] = x;と代入。同じものがあったら (1)に戻る。 (3) i = i+1; この方法だと、i=98の時は、ほとんどの場合「a[0]~a[i-1]の中にxと同じ値がある」ことになってしまい、iが増えるごとにスピードが落ちます。 100個くらいの数字なら良いのですが、100000000個の数字だと非効率な気がします。 みなさんどうなさっているのでしょうか?

    • ベストアンサー
    • Java
  • バナーのランダムな並べ替え

    ABCDEの広告サイトバナーがあるとして各サイトのバナーが3種類あるとします A-1、A-2、A-3...合計15個のバナーがあります。 下記で各サイトの3つのバナーをランダムで一つ表示させています <script language="JavaScript"> <!-- サイトA=new Array(); サイトA[0]='A-1'; サイトA[1]='A-2'; サイトA[2]='A-3'; i=Math.floor(Math.random()*サイトA.length); document.write(サイトA[i]); // --> </script> このようにABCDEと追記して5つのバナーを表示しているのですがこの5つのバナーの順序を リロードする度にランダムに並び替えたいのですが良い方法はないでしょうか?

  • ランダムで文字を表示

    ランダムで文字を表示 よろしくお願いします m(__)m 現在以下のように複数のテキストの中からランダムで3つずつ表示しています。 <!-- A=6 moji=new Array(A) moji[1]="<A href='http://www.●●●.com/'>あいうえお</A>"; moji[2]="<A href='http://www.■■■.com/'>かきくけこ</A>"; moji[3]="<A href='http://www.▲▲▲.com/'>さしすせそ</A>"; moji[4]="<A href='http://www.○○○.com/'>たちつてと</A>"; moji[5]="<A href='http://www.□□□.com/'>なにぬねの</A>"; moji[6]="<A href='http://www.△△△.com/'>はひふへほ</A>"; I= Math.floor(Math.random ()*A+1) ; //--> <!-- for(i=I;i<=I+2;i++){    if ( i<=6 ){ document.write(moji[i]+"<BR>"); }    else{ document.write(moji[i-5]+"<BR>"); }    } //--> 質問なのですが、最後から3行目 [i-5] の5は何を意味しているのでしょうか? javascriptは自分で作る事ができず、どこかで見つけたものを少しずついじる程度しか知識がありません。 どうぞよろしくお願いします。

  • ランダムで画像を表示させるには?

    環境はFlashCS5で、アクションスクリプト3.0を使用しています。 5枚の画像(インスタンス名:mc0~mc4)をランダムで表示させるムービーを制作しているのですが、 下記のスクリプトですと、ランダムで画像が表示されるのですが、画像の切り替えがループになってしまって、次から次へとランダムで画像が切り替わります。フレーム1に下記のスクリプトを記述し、フレーム1にムービーインスタンス「mc0」から「mc4」を配置しています。 function randomShowMC():void { for (var i:int=0; i<5; i++) { this["mc" + i].visible = false; } var rnd:int = Math.floor(Math.random() * 5); this["mc" + rnd].visible = true; } randomShowMC(); var myTimer:Timer = new Timer(3000); myTimer.addEventListener(TimerEvent.TIMER ,function(){randomShowMC()}); myTimer.start(); このスクリプトを改良?改造?して、ランダムの画像が1回のみ…つまり、おみくじみたいに、(mc0~mc4の画像を)ランダムで1回のみ画像を表示させたいのです…表示後の画像が切り替わらずそのままで停止させたいのです。 又は、ムービーインスタンス「mc0」から「mc4」の画像をランダムで表示させ、最初に表示された、その画像で停止させるスクリプトを新規に記述しても構いませんので、ご指導・アドバイスをお願い致します…。 どなたか、解る方がいましたらランダム画像表示で1回表示のみのループしないスクリプトを教えてください。よろしくお願い致します…。

    • ベストアンサー
    • Flash
  • ランダムに数字を並び変える方法は

    windows2000 Flash MX 1~9までの数字をランダムに発生させ配列に入れるには v_count=new Array(); for(i=1; i<10; i++) {   v_max=9   v_count[i]=Math.floor(Math.random()*v_max)+1  } と記述しました。 配列に格納されたランダムに発生した数字が9個ありますが当然同じ数字も含まれています。 これを数字が重複しないようにする方法が知りたいのです。 つまり1~9までの数字をランダムに並べ替えたいのですがどのような方法がありますか。教えて下さい。 説明が下手でスミマセン。 ご指摘いただければ補足します。

    • ベストアンサー
    • Flash
  • AS2 ランダムに出現する煙

    初めて質問させてもらいます。 FLASHのActionScriptで画面下から画面上へ昇っていく煙をランダムに出現させるASを作成したのですが、動き的には満足しているのですが開始時に画面に一気に煙がですぎになります。 煙のない状態から始めるには何を付け加えればいいのかわかりません。 どなたかご教授願えるかたお願いいたします。 環境 FLASH cs3.AS2にて製作 ソース ・タイムライン ----------------------------------------------- for (var i = 0; i<10; i++) { snow.duplicateMovieClip("snow"+i, i); } ----------------------------------------------- ・mc ----------------------------------------------- onClipEvent (load) { sw = Stage.width; sh = Stage.height; th = this._height; this._x = Math.random()*sw; this._y = Math.random()*sh; speed = Math.random()*4+1; flick = Math.random()*4+1; rotate = Math.random()*1; } onClipEvent (enterFrame) { this._y -= speed; this._x -= flick; this._rotation +=rotate; if (this._y<-869.8) { this._y = 1400; } if (this._x>sw+th || this._x<-th) { this._x = Math.random()*sw; this._y = -th; } } ----------------------------------------------- よろしくお願いいたします。

    • ベストアンサー
    • Flash