Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Заполнение массива рандомными значениями

#python #массивы #python_3x


import random
import time
li = []
tmp = 100000
for i in range(0,100000):
    if tmp != 0:
        x1 = random.randint(0,tmp)
        li.append(x1)
        tmp = x1
    else: break
n = 1
start_time = time.clock()
while n < len(li):
     for i in range(len(li)-n):
          if li[i] > li[i+1]:
               li[i],li[i+1] = li[i+1],li[i]
     n += 1
print(li)
print ("{:g} seconds".format(time.clock() - start_time))


Нужно заполнить на 100.000 значений массив (и отсортировать пузырьком), вот только
рандом немного хромает 
    


Ответы

Ответ 1



Заполнение случайными числами: import random items = [random.randint(0, 100000) for i in range(100000)] print(len(items)) # 100000 Если нужны только уникальные числа в указанном диапазоне, тогда можно просто сгенерировать все числа из диапазона и перемешать их: import random items = list(range(100000)) print(items[:5]) # [0, 1, 2, 3, 4] random.shuffle(items) print(items[:5]) # [718, 41458, 48336, 10501, 18877] jfs предложил пример генерации случайных чисел используя модуль numpy: import numpy items = numpy.random.randint(100000, size=100000) print(len(items), items[:5]) # 100000 [73846 49707 18846 73887 43349] Эта функция сгенерирует указанное количество чисел, в указанном случайном диапазоне, но нет гарантии уникальности чисел. MaxU предложил генерацию неповторяющихся случайных чисел используя numpy.random.choice: import numpy items = numpy.random.choice(100000, 100000, replace=False) print(len(items), items[:5]) # 100000 [94792 79537 9678 66784 92049]

Комментариев нет:

Отправить комментарий