Skip to content

Instantly share code, notes, and snippets.

@FranckyU
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FranckyU/6c7a9f5a920d1bd3df93 to your computer and use it in GitHub Desktop.
Save FranckyU/6c7a9f5a920d1bd3df93 to your computer and use it in GitHub Desktop.
Elegant bitwise number generator
lambda(m, n) do
seed = (rand(2).even?) ? 0b0 : 0b1
num_bit_1_left = (seed == 0b1) ? n-1 : n
bits_length = 1
(m-1).times do
bit_mask = if num_bit_1_left > 0
((m - bits_length) > num_bit_1_left) ? ((rand(2).even?) ? 0b0 : 0b1) : 0b1
else
0b0
end
seed = (seed << 1) | (bit_mask >> bits_length) # ETO NO TENA RESAKA BITWISE
num_bit_1_left -= 1 if bit_mask == 0b1
bits_length += 1
end
seed
end.call(m_value, n_value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment