В данном случае рациональнее было бы использовать цикл do-while — можно было бы сэкономить на вызове
num_int2 = arc4random() % (populationSize / 2);