On 10/07/2009, Devel63 <danstic...@gmail.com> wrote:
>
>  The best way is to assign a one-up counter to each record as you
>  create it, then call random.randint(1,max_counter) to determine the
>  desired record.
>
>  To retrieve multiple random entities in a query, do a filter('IN ',
>  [my random nums]).

doent work that well once records start getting deleted (get the same
issue, non uniform distribution)

nor does it work if you filtering at the same time :(




>
>  Note that behind the scenes this generates multiple queries, so you're
>  not saving much time.
>
>
>  On Jul 10, 7:34 am, Wooble <geoffsp...@gmail.com> wrote:
>  > Highly non-optimal solution: have a cron job assign new random numbers
>  > to your entities often enough to simulate randomness.  Even just re-
>  > assigning numbers to entities that have been previously selected might
>  > work.  This involves a lot more CPU as you'd be doing writes, but
>  > shifts the work from request time to a background process so your
>  > users don't see the added latency for doing N queries.
>  >
>  > Another possible solution would be to fetch keys only for X*N entities
>  > (where greater X's produce more apparent randomness) then choose N of
>  > those keys to actually fetch entities.
>  >
>  > On Jul 9, 12:33 pm, aloo <aleem.maw...@gmail.com> wrote:
>  >
>  > > Hi all,
>  >
>  > > I'm trying to write a GQL query that returns N random records of a
>  > > specific kind. My current implementation works but requires N calls to
>  > > the datastore. I'd like to make it 1 call to the datastore if
>  > > possible.
>  >
>  > > I currently assign a random number to every kind that I put into the
>  > > datastore. When I query for a random record I generate another random
>  > > number and query for records > rand ORDER BY asc LIMIT 1.
>  >
>  > > This works, however, it only returns 1 record so I need to do N
>  > > queries. Any ideas on how to make this one query? Thanks.
>  >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to