Items array data generation incomplete

I'm finding that sometimes items contains uninitialized values.

I think the initialisation code has a probability of not filling every member of the items array:

auto itemsCursor = 0ul;
  for(size_t i = 0ul; i < db.ordersCardinality; i++) {
    auto v = lcg();
    int numberOfItemsPerOrderVariation = ((v & 2)>>1) + (v & 1) - 1;
    size_t numberOfItemsPerOrder =
        averageNumberOfItemsPerOrder + numberOfItemsPerOrderVariation; // fix this
    for(size_t j = 0; (j < numberOfItemsPerOrder) && (itemsCursor < db.itemsCardinality); j++) {
      // ...
      itemsCursor++;
    }
  }

e.g. if ordersCardinality is 256 and itemsCardinality is 1024, depending on how numberOfItemsPerOrder varies itemsCursor may not iterate completely through every element.

Immediate window Printf