Это простая комбинаторика, а не программирование. Существует a**n
способ выбрать любое из a
значений n
раз (повторение разрешено). В вашем случае a
равно len(p)
(исходный p
, массив) или 2 (поскольку вы сгенерировали массив с двумя значениями), а n
равно 50, поэтому получите 2**50
или 1125899906842624 получаются из ваших product
, если у вас есть много времени для их итерации.
Теперь, если вы ищете, сколько различных значений вы получите, Ответ еще проще (хотя и неуловимо). Там когда-либо генерируется только одно отдельное значение, кортеж из 50. Это потому, что вы берете продукты из массива, который содержит только значение 1
, и ничего больше, поскольку numpy.random.randint(1, 2)
только дает вам 1
(верхняя граница исключена).