Создание списка примеров случайного умножения - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть два списка из 100 элементов, заполненных случайными числами от 1 до 10.

Я хочу составить список умножений случайным образом выбранных чисел, который продолжается до тех пор, пока не будет сгенерировано произведение, превышающее 50.

Как получить такой список, в котором каждый элемент является продуктом и его двумя факторами?

Вот код, который я пробовал. Я думаю, что у него много проблем.

import random
list1 = []
for i in range(0,1000):
    x = random.randint(1,10)
    list1.append(x)

list2 = []
for i in range(0,1000):
    y = random.randint(1,10)
    list2.append(y)

m=random.sample(list1,1)
n=random.sample(list2,1)

list3=[]
while list3[-1][-1]<50:
    c=[m*n]
    list3.append(m)
    list3.append(n)
    list3.append(c)
print(list3)

Вывод, который я хочу

[[5.12154, 4.94359, 25.3188], [1.96322, 3.46708, 6.80663], [9.40574, 2.28941, 21.5336], [4.61705, 9.40964, 43.4448], [9.84915, 3.0071, 29.6174], [8.44413, 9.50134, 80.2305]]

Для большей наглядности:

[[randomfactor, randomfactor, product], ......, [[randomfactor, коэффициент случайности, больше 50]]

1 Ответ

0 голосов
/ 05 ноября 2018

Подготовка двух списков с 1000 номерами в каждом с номерами от 1 до 10 является пустой тратой памяти. Если это просто упрощение, и вы хотите использовать списки, которые вы получили в противном случае, просто замените

a,b = random.choices(range(1,11),k=2)

по

a,b = random.choice(list1), random.choice(list2)

import random

result = []
while True:
    a,b = random.choices(range(1,11),k=2)  # replace this one as described above
    c = a*b
    result.append( [a,b,c] )
    if c > 50:
        break

print(result)

Выход:

[[9, 3, 27], [3, 5, 15], [8, 5, 40], [5, 9, 45], [9, 3, 27], [8, 5, 40], [8, 8, 64]]

Если вам нужно 1000 случайных значений от 1 до 10, выполните:

random_nums = random.choices(range(1,11),k=1000)

это если намного быстрее, чем зацикливание и добавление одиночных целых чисел 1000 раз.


Доку:

...