Eu adoraria dar uma resposta específica, mas preciso de ajuda para entender seu processo de pensamento...
Você começa escrevendo:
Mas você continua escrevendo:
Para mim, a última especificação faz pouco sentido à luz da primeira observação.
Imho, o que você realmente quer é que os usuários tenham a mesma quantidade de oportunidades de votar em cada carro. Ou mais precisamente, votar em cada carro comparado a cada outro carro.
Se você assumir que as variáveis (carro) são independentes, então você precisa manter uma contagem de quantas vezes uma escolha surgiu, em vez de quantas vezes ela foi votada, e ajustar seu processo de decisão de acordo. É um problema de matemática, não é tão feio, e pode então ser traduzido em SQL para melhor ou pior -- eu arrisco que provavelmente será pior.
Se você assume, como eu, que eles não são independentes, você também precisa levar em conta as correlações -- e armazenar quantas vezes eles surgiram um com o outro também. Porque, bem, há uma chance infinitamente pequena de que você não prefira este Mercedes ao invés daquele Tata, aquele Xinkai ou aquele AvtoVAZ. Mas dada a escolha entre o mesmo Mercedes, BMW, Porsche e Ferrari, a decisão pode não ser tão clara.
Em outras palavras, sua especificação não responde ao problema como você a apresentou.
Atualmente, estou implorando para concordar com a resposta postada há duas horas:escolha-as realmente aleatoriamente e você ficará satisfeito sem código extra ...
Como uma observação lateral, se seus ids realmente não tiverem lacunas, gere quatro ids em php ou qualquer outra coisa e busque-os usando um
in()
declaração. Você não vai ficar mais eficiente do que isso.