y2 = y1 + row_height Yes, I should have seen that. So much clearer. x_positions = [random.random() * row_width for _ in range(d)] I understand what’s happening here, but I don’t think I’m experienced enough to think this is more readable than the while loop. I agree it is the better solution as it obviates the while loop. Thanks @frederik