não fazia mais sentido fazer o sample no where, e não no array?
porque da forma como está, calha de escolheres ids que não existem, enquanto outros poderiam existir

mas lá está, em production não deve ser muito problemático, por isso pode ficar também