Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned long long int random_word(size_t n, size_t m)
- # b = size of integer type
- # n = number of set bits
- # random_limited(x) is some function returning [0, x) sufficiently uniformly
- def random_n_set_bits(b, n):
- assert b > 0
- assert n >= 0 and n <= b
- result = 0
- available = list(range(b))
- for i in range(n):
- index = random_limited(len(available))
- bit = available[index]
- available = available[:index] + available[index + 1:]
- result |= (1 << bit)
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement