mysql:6353
From: Takeyuki Miyagawa <Takeyuki Miyagawa <miyagawa@xxxxxxxxxx>>
Date: Tue, 08 Oct 2002 12:06:45 +0900
Subject: [mysql 06353] Re: servlet では order by rand() ができない?
みやがわです。 > 結局Javaとmysqlを再インストールしましたが結果変わらず涙涙。。 > クエリいじってできないかなぁ。。。。 > > select tango,rand() from Asa; ってやっても。。うぬう結局ループ使うの?? JDBCのドライバとかバージョンを変えてみてはどうでしょうか?。 また、データが登録のみで累積していくのもであれば、テーブルの項目に AUTO_INCREMENTを持つフィールドを付け加えたみてはどうでしょうか?。 Javaで取得した乱数をSQLの条件(INとか)に付けて、乱数と一致している値のみを 取ってくるような作りにとか。 > ここから先はJavaの話になってしまうので見たい方だけ見てください。 > > Aisatsu ai = new Aisatsu(); > String aisatsu = ai.Disp(new Random().nextInt(ai.getCount())); > ↓こんな感じで > > asiatsu[i] = ai.Disp(new Random().nextInt(ai.getCount())); > asiatsu[i+1] = ai.Disp(new Random().nextInt(ai.getCount())); > > これはなぜでしょう??? > としたんですが、new Random を呼んでいるので同じ処理を続けてしても > 別の結果が返ってくるはずなのに同じ結果しかかえってきません ?_? 短い時間というか同じ時間でnew Random()を行っているため乱数の生成時の 種が同じになるため、結果の乱数も同じになるのではないでしょうか。 new Random() と次の new Random()の間にでもwaitなど入れれば値は変わります。 それか、下記のようにインスタンスを使いまわす方法にすれば同じ値が続くことは ないと思います。 Random rd = new Random(); System.out.println(rd.nextInt(100)); System.out.println(rd.nextInt(100)); ---- Takeyuki Miyagawa miyagawa@xxxxxxxxxx
6339 2002-10-07 06:20 ["城" <sora_iro@xxxxx] servlet では order by rand() ができない? 6343 2002-10-07 18:27 ┣["Takashi Yamashita" ] 6344 2002-10-07 18:30 ┃┗["Takashi Yamashita" ] 6347 2002-10-07 19:44 ┃ ┗["城" <sora_iro@xxxxx] 6348 2002-10-07 21:17 ┃ ┣["Takashi Yamashita" ] 6350 2002-10-07 22:25 ┃ ┗[Satoshi Komori <sato] 6352 2002-10-08 07:12 ┃ ┗["城" <sora_iro@xxxxx] -> 6353 2002-10-08 12:06 ┃ ┗[Takeyuki Miyagawa <m] 6361 2002-10-08 17:54 ┃ ┗["城" <sora_iro@xxxxx] 6362 2002-10-08 18:15 ┃ ┗["kosugi" <kosugi@xxx] 6346 2002-10-07 19:05 ┣["kosugi" <kosugi@xxx] 6349 2002-10-07 21:26 ┣["Takashi Yamashita" ] 6363 2002-10-08 18:59 ┣[<rio-t@xxxxxxxxxx> ] 6380 2002-10-09 21:42 ┃┗["城" <sora_iro@xxxxx] 6382 2002-10-09 22:58 ┗["小川 修" <shuogawa] 6392 2002-10-10 13:17 ┗["kosugi" <kosugi@xxx] 6424 2002-10-13 00:28 ┗["shuogawa" <shuogawa] 6425 2002-10-14 00:05 ┗[Tomoyuki Ishino <ish]