Look at the documentation of the add
method:
IndexOutOfBoundsException - if the index is out of range (index < 0 || index > size())
It does not make sense to put an element into a list at a position that would cause holes in the list.
The ensureCapacity
just makes room for such many elements. It does not mean they are actually there.
With this change it should work:
int bIndex = generator.nextInt(bList.size()+1);