Thanks, will look at that as well.
I was thinking achieving this with a user function,
maybe using sqlite3_randomness, but I this looks very good.

RBS

On Fri, Jan 22, 2016 at 12:39 PM, Stephan Beal <sgbeal at googlemail.com>
wrote:

> On Fri, Jan 22, 2016 at 12:22 PM, Stephan Beal <sgbeal at googlemail.com>
> wrote:
>
> >
> >
> > On Fri, Jan 22, 2016 at 12:11 PM, Bart Smissaert <
> bart.smissaert at gmail.com
> > > wrote:
> >
> >> Say I want 10000 random numbers between 100 and 1000 how can I do that
> >> without
> >> selecting from a table?
> >> I know I can do:
> >> select abs(random() %(1000 - 100)) + 100 as rnd from TableWith10000Rows
> >> but there must be a better way.
> >>
> >>
> > Maybe not perfect, but this seems to work...
> >
> > sqlite> with conf(max) as (select 10), rnd(n, x) as (select abs(random()
> > %(1000 - 100)) + 100, 1 union all select abs(random() %(1000 - 100)) +
> 100,
> > x+1 from rnd where x<(select max from conf)) select * from rnd;
> >
>
> Another variant which moves all the configurable bits up one level:
>
> sqlite> with conf(max,slack) as (select 20, 2), rnd(n, x) as (select
> abs(random() %(max - slack)) + slack, 1 from conf union all select
> abs(random() %(max - slack)) + slack, x+1 from rnd, conf where x<conf.max)
> select * from rnd;
> 6|1
> 3|2
> 10|3
> 18|4
> 12|5
> 5|6
> 2|7
> 2|8
> 11|9
> 18|10
> 16|11
> 7|12
> 9|13
> 13|14
> 10|15
> 3|16
> 17|17
> 2|18
> 17|19
> 19|20
>
> To get the range from your original description, swap out max/slack with
> 1000/100, but if i'm not mistaken it will returns the range inclusive range
> [0,999].
>
> It also works as a view:
>
> sqlite> create view rng10 as with conf(max,slack) as (select 10, 0), rnd(n,
> x) as (select abs(random() %(max - slack)) + slack, 1 from conf union all
> select abs(random() %(max - slack)) + slack, x+1 from rnd, conf where
> x<conf.max) select * from rnd;
> sqlite> select * from rng10;
> 5|1
> 0|2
> 3|3
> 2|4
> 4|5
> 8|6
> 3|7
> 1|8
> 1|9
> 1|10
> sqlite> select * from rng10;
> 6|1
> 5|2
> 0|3
> 1|4
> 5|5
> 3|6
> 3|7
> 4|8
> 5|9
> 1|10
>
> --
> ----- stephan beal
> http://wanderinghorse.net/home/stephan/
> http://gplus.to/sgbeal
> "Freedom is sloppy. But since tyranny's the only guaranteed byproduct of
> those who insist on a perfect world, freedom will have to do." -- Bigby
> Wolf
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

Reply via email to