sqlite> select kurt(abs(random() % 7)) from generate_series where start=1 and 
stop=1e6;
-1.25154453962449

sqlite> select skew(abs(random() % 7)) from generate_series where start=1 and 
stop=1e6;
0.00104535938599554

The PRNG is pretty random.  

It is slightly concave (that is, anti-normal) (a "flat" distribution would have 
a kurtosis of -1.2) and the curve is slightly skewed above the average.

---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a 
lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>boun...@mailinglists.sqlite.org] On Behalf Of Cecil Westerhof
>Sent: Sunday, 8 July, 2018 00:59
>To: SQLite mailing list
>Subject: Re: [sqlite] Kind of pivot table
>
>2018-07-08 8:49 GMT+02:00 Keith Medcalf <kmedc...@dessus.com>:
>
>>
>> Why not use MOD (%) as in
>>
>> ABS(RANDOM() % 6)
>>
>
>​You are completely right. How stupid of me. :'-(
>
>It only has to be:
>    ABS(RANDOM() % 7)
>
>
>
>> >-----Original Message-----
>> >From: sqlite-users [mailto:sqlite-users-
>> >boun...@mailinglists.sqlite.org] On Behalf Of Cecil Westerhof
>> >Sent: Sunday, 8 July, 2018 00:44
>> >To: SQLite mailing list
>> >Subject: Re: [sqlite] Kind of pivot table
>> >
>> >2018-07-08 8:19 GMT+02:00 Cecil Westerhof
><cldwester...@gmail.com>:
>> >
>> >> I thought there was a problem with RANDOM. I used:
>> >>     ,        ABS(RANDOM()) / CAST(1.4E18 AS INTEGER) AS
>Randomiser
>> >>
>> >> And it seemed I got a lot of threes.
>> >>
>> >> To check this I used:
>> >>     SELECT Randomiser
>> >>     ,      COUNT(*)   AS Count
>> >>     FROM (
>> >>         SELECT   date
>> >>         ,        ABS(RANDOM()) / CAST(1.4E18 AS INTEGER) AS
>> >Randomiser
>> >>         FROM     CPUUsage
>> >>         ORDER BY date
>> >>     )
>> >>     GROUP BY Randomiser
>> >>     ORDER BY Randomiser
>> >>
>> >> And this gave results like:
>> >>     "0"    "165491"
>> >>     "1"    "166270"
>> >>     "2"    "166207"
>> >>     "3"    "165727"
>> >>     "4"    "165619"
>> >>     "5"    "165749"
>> >>     "6"    "98042"
>> >>
>> >> So 6 is created less often as 0 - 5, but that is in my use case
>not
>> >a
>> >> problem.
>> >>
>> >> This worked for me because I have a big table CPUUsage. But if I
>> >would not
>> >> have, is there another way to to do this?
>> >>
>> >
>> >By the way better select is:
>> >    SELECT Randomiser
>> >    ,      COUNT(*)   AS Count
>> >    FROM (
>> >        SELECT   date
>> >        ,        CAST(ABS(RANDOM()) / (9.223E18 / 7) AS INTEGER)
>AS
>> >Randomiser
>> >        FROM     CPUUsage
>> >        ORDER BY date
>> >    )
>> >    GROUP BY Randomiser
>> >    ORDER BY Randomiser
>> >
>> >This gives:
>> >    "0"    "156204"
>> >    "1"    "157032"
>> >    "2"    "155636"
>> >    "3"    "156399"
>> >    "4"    "156256"
>> >    "5"    "155480"
>> >    "6"    "156073"
>> >    "7"    "52"
>> >
>> >This is much better. Only very rarely you get a seven you do not
>> >want.
>> >(Again in my case not really a problem.)
>> >
>> >Because in my case I use Randomiser to get a small subset of the
>> >records,
>> >this can be solved with:
>> >    SELECT Randomiser
>> >    ,      COUNT(*)   AS Count
>> >    FROM (
>> >        SELECT   date
>> >        ,        CAST(ABS(RANDOM()) / (9.223E18 / 7) AS INTEGER)
>AS
>> >Randomiser
>> >        FROM     CPUUsage
>> >        ORDER BY date
>> >    )
>> >    WHERE    Randomiser <> 7
>> >    GROUP BY Randomiser
>> >    ORDER BY Randomiser
>> >​
>> >
>> >​Then I get something like:
>> >    "0"    "155806"
>> >    "1"    "156270"
>> >    "2"    "156473"
>> >    "3"    "155748"
>> >    "4"    "155828"
>> >    "5"    "156196"
>> >    "6"    "156733"​
>>
>
>--
>Cecil Westerhof
>_______________________________________________
>sqlite-users mailing list
>sqlite-users@mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to