Вы получаете StackOverflowError
, потому что вероятность того, что xPositions[j]>temp-50 && xPositions[j]<temp+50
не пройдет, очень мала, когда есть диапазон 50. Вероятность завершения этой функции еще ниже из-за внутреннего цикла for. Таким образом, это будет повторяться ..
Однако, не похоже, что вы делаете то, что действительно хотите достичь. Если вы хотите сгенерировать числа, которые находятся в пределах заданного диапазона, вы не хотите сравнивать xPositions[j]
с temp-50
и temp+50
. Это будет восстанавливать числа, когда xPositions[j]
не находится в некотором случайном диапазоне.
Если вы действительно хотите генерировать числа, которые находятся в определенном диапазоне, тогда вам нужно избавиться от внутреннего цикла for и вместо этого сделать что-то вроде этого:
for every number in xPositions:
a = random number
if a is within an unwanted range, regenerate numbers
else set xPositions[i] = a
или без рекурсии:
for every number in xPositions:
a = random number
while a is within an unwanted range:
a = random number
set xPositions[i] = a
С другой стороны, если вы хотите рандомизировать порядок некоторых изображений вдоль оси x, вы можете сделать что-то вроде этого:
bag = [0 1 2 ... n-1]
shuffle bag
for every number in xPositions:
xPositions[i] = bag.pop * IMAGE_WIDTH