在bitstring中设置一个随机的附加位

时间:2014-03-07 21:05:59

标签: random bits bitset

给定一个位串s,我正在寻找一种方法,将0中的随机s位设置为1位。此外,用户应该能够指定可以在s中设置“左”的距离。对于奖励积分,如果所有位都已设置,解决方案仍应终止,并且当只剩下一个0位时,解决方案不应该减速。

给出具体(但天真)的例子:

for (int i = 0; ; i = (i+1) % last) {
    if (!(*v & (1 << i)) && random() > RAND_MAX/2) {
        *v |= (1 << i);
        return;
    }
}

可能有更好的方法可以做到这一点,希望Stack Overflow的无所不知的蜂巢头脑可以告诉我如何。

1 个答案:

答案 0 :(得分:0)

如果计算了指定范围内的0位数,则在该范围内选择一个随机数N,然后翻转第N个0位,这将满足您的“奖励”要求。