аватар question@mail.ru · 01.01.1970 03:00

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

import randomimport timeli = []tmp = 100000for i in range(0,100000):    if tmp != 0:        x1 = random.randint(0,tmp)        li.append(x1)        tmp = x1    else: breakn = 1start_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 += 1print(li)print (""{:g} seconds"".format(time.clock() - start_time))

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

аватар answer@mail.ru · 01.01.1970 03:00

:

import randomitems = [random.randint(0, 100000) for i in range(100000)]print(len(items))  # 100000

Если нужны только уникальные числа в указанном диапазоне, тогда можно просто сгенерировать все числа из диапазона и перемешать их:

import randomitems = 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 numpyitems = numpy.random.randint(100000, size=100000)print(len(items), items[:5])  # 100000 [73846 49707 18846 73887 43349]

Эта функция сгенерирует указанное количество чисел, в указанном случайном диапазоне, но нет гарантии уникальности чисел.


MaxU предложил генерацию неповторяющихся случайных чисел используя numpy.random.choice:

import numpyitems = numpy.random.choice(100000, 100000, replace=False)print(len(items), items[:5])  # 100000 [94792 79537  9678 66784 92049]

Последние

Похожие