ratio - rational - irrational

« Rubyのcatch, throwの作法 | Main | 不快に基づく排除 »

2006年12月22日

MS SQLServerで結果セットのシャッフル

SQLServerのrand()は同一のクエリ内においては常に一定の値を返すのね。

だから、order byにランダムな値を与えてシャッフルしようと思ったら、一工夫必要。Black Rainさんという方が書いてらっしゃるのを見つけた。 こんなの

結果セットの行ごとに異なる値で、かつ時間に依存して毎度変化する値がほしいわけだから、行のidか何か(行依存成分)+RANDの値(時間依存成分)を使う。ただし、このままだと行のidに対して単調増加で意味がないから、それでタンジェントに掛けてから変動の激しい下位桁を使ってる。なるほど。

さしあたってはこれでいいかな。



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/568

コメント

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2006 Yugui

Powered by Movable Type 3.2-ja-2