4

Netezza は、その random() 関数が 0.0 から 0.99999 の間の浮動小数点数を生成すると言っています...範囲内 (たとえば、5 から 10 の間) でランダムな int を生成しようとしています。インターネットは、分数を範囲内の数値にスケーリングするには、次のような方程式を使用するように私に言いました:

select f,count(*) from (
    select CAST(5 + random() * (10-5) as INT) as f
    from table_of_numbers
    where number between 1 and 5000
) x group by 1 order by 1

ただし、そのコードを使用すると、極端な値がサンプルで過小評価されます。

F    COUNT
5    486    <---
6    992
7    1057
8    1000
9    937
10   528    <---
これを修正する方法を知っている人はいますか?

ありがとう!

4

2 に答える 2