Подытожим все сказанное и не сказанное: (учитывая, что Вы видимо, новичок, начнем по-порядку):
- Как подметил @insolor: не нужно увеличивать переменную
i на единицу каждый раз, она и так будет увеличиваться.
- Нужды в цикле
while нет, цикл for сам завершить после 10 итераций («повторений» если проще выражаться). И в конструкции if тоже нет смысла — вполне логично, что после завершения цикла переменная i будет равна 10: тут просто без вариантов.
Т.е. код можно упростить до такого:
array = []
import random
for i in range(10):
random_number = random.randint(1,100)
array.append(random_number)
print(array)
Далее, есть такая вещь как «Генераторы списков», если Вы не знаете, что это Вам стоит почитать об этом, это не сложно.
Простой пример генераторов списков:
array = [1, 2, 4, 5, 6, 98, 123, 45]
# % — операция вычисления остатка от деления
# если остаток от деления на 2 равен единице, то число нечетно
only_odd_numbers = [n for n in array if n % 2 == 1]
print(only_odd_numbers ) # [1, 5, 123, 45]
С помощью генераторов списка можно еще больше упростить код:
import random
array = [random.randint(1,100) for i in range(10)]
print(array)
UPDATE:
Есть еще такая функция как random.choices. Суть этой функции на примерах:
import random
arr1 = random.choices([1, 2], k=10)
arr2 = random.choices(range(1, 10))
arr3 = random.choices(range(1, 100), k=10)
arr4 = random.choices(range(1, 10), k=20)
print(arr1) # [1, 1, 1, 2, 2, 1, 2, 1, 2, 2]
print(arr2) # [8]
print(arr3) # [60, 35, 80, 26, 7, 65, 58, 9, 77, 2]
print(arr4) # [1, 1, 6, 4, 2, 6, 7, 2, 2, 2, 2, 1, 1, 6, 1, 7, 8, 3, 5, 3]
Обратите внимание: arr1 содержит только единицы и двойки.
Таким образом: random.choices возвращает список, состоящий из определенного количества (определяемого параметром k) элементов, каждый из которых является случайным элементом последовательности, которую мы передали в первом аргументе.
UPDATE Важно замечание сделал @jfs: «randint включает правую границу, а range — нет»