373c373,374
< bool isRead = random_mt.random<uint8_t>(0, 100) < readPercent;
---
> bool isRead = readPercent != 0 &&
> (readPercent == 100 || random_mt.random<uint8_t>(0, 100) < readPercent);
375,376c376,377
< if (readPercent == 0)
< assert(!isRead);
---
> assert((readPercent == 0 && !isRead) || (readPercent == 100 && isRead) ||
> readPercent != 100);
445c446,447
< bool isRead = random_mt.random<uint8_t>(0, 100) < readPercent;
---
> bool isRead = readPercent != 0 &&
> (readPercent == 100 || random_mt.random<uint8_t>(0, 100) < readPercent);
447,448c449,450
< if (readPercent == 0)
< assert(!isRead);
---
> assert((readPercent == 0 && !isRead) || (readPercent == 100 && isRead) ||
> readPercent != 100);