Could this just be a loop?

```rust
assert!(!bound.is_zero());
let bits = bound.bits();
loop {
    let n = self.gen_biguint(bits);
    if n < bound { return n; }
}
```