Ich habe ein Modell in Rails, aus dem ich einen zufälligen Eintrag auswählen möchte. Bisher habe ich es mit einem benannten Bereich so gemacht:
named_scope :random, lambda { { :order=>'RAND()', :limit => 1 } }
Jetzt habe ich jedoch ein Integer-Feld 'Gewicht' zum Modell hinzugefügt, das die Wahrscheinlichkeit darstellt, mit der jede Zeile ausgewählt werden soll.
Wie kann ich jetzt eine gewichtete Zufallsauswahl treffen?
Ich habe zwei Methoden auf snippets.dzone.com gefunden und ausprobiert, die die Array-Klasse erweitern und eine gewichtete Zufallsfunktion hinzufügen, aber beide haben nicht funktioniert oder zufällige Elemente für mich ausgewählt.
Ich benutze REE 1.8.7 und Rails 2.3.
1 Stimmen
Es könnte gut sein, anzugeben, welche DB Sie verwenden. Es ist nicht schwer in Ruby zu machen, aber es könnte in der DB viel effizienter sein.
0 Stimmen
Oh ja, ganz vergessen zu erwähnen, dass ich mysql benutzt habe. Aber ich war so darauf konzentriert, das in Ruby zu lösen, dass ich gar nicht daran gedacht habe, es auf der Abfrageebene zu lösen.