Método mais eficiente de gerar um número aleatório com um número fixo de bits definido

Eu preciso gerar um número aleatório, mas ele precisa ser selecionado no conjunto de números binários com números iguais de bits definidos. Por exemplo. escolha um valor de byte aleatório com exatamente 2 bits definidos ...

00000000 - no
00000001 - no
00000010 - no
00000011 - YES
00000100 - no
00000101 - YES
00000110 - YES
...

=> Set of possible numbers 3, 5, 6...

Note que este é um conjunto simplificado de números. Pense mais nas linhas de 'Escolha um número aleatório de 64 bits com exatamente 40 bits definidos'. Cada número do conjunto deve ter a mesma probabilidade de surgir.

questionAnswers(6)

yourAnswerToTheQuestion