У меня довольно простое приложение, которое необходимо (насколько это возможно) случайно назначить человека команде.Активная запись истина случайная?
На данный момент я повторяю несколько различных методов.
Team.where(assigned: false).order("RANDOM()").first
, а также загрузки его в массив и используя образец()
arr.sample().inspect
Однако, они не появляются, чтобы быть действительно случайным образом, они обычно покидают края (1,2 .. 8,9, где count = 10). Есть ли лучший метод, который делает или не связан с AR? Есть ли математически заметная разница между PSQL rand и sqlite3 random()?
Любая помощь по циклам для генерирования случайного распределения оценивается!
Образец всегда был справедливым для меня - вы пытались сделать это несколько сотен тысяч раз и подсчитываете, сколько раз каждый объект будет выбран? –
@williamthomas вы можете использовать смещение, чтобы выбрать случайные значения, проверьте эту ссылку: http://stackoverflow.com/questions/2752231/random-record-in-activerecord – anusha
Да, это «кажется» прекрасно, намного лучше, чем прямо с db , Не уверен, что кэширование оказывает на него какое-либо влияние. – williamthomas