Atualmente, estou escrevendo algum código para gerar dados binários. Eu preciso especificamente gerar números de 64 bits com um determinado número de bits definidos; mais precisamente, o procedimento deve levar cerca de e retornar um número pseudo-aleatório de 64 bits com exatamente n bits definido como 1 e o restante definido como 0.
Minha abordagem atual envolve algo como isto:
- Gere um número pseudo-aleatório de 64 bits .
- Conte os bits em , armazenando o resultado em b .
- Se , produza k ; caso contrário, vá para 1.
Isso funciona, mas parece deselegante. Existe algum tipo de algoritmo PRNG que pode gerar números com bits definidos de maneira mais elegante que isso?