Random без повторения

Мы располагаем следующим кодом:

import random

L1= random.choice("ABCDEFGH")
L2= random.choice("ABCDEFGH")
L3= random.choice("ABCDEFGH")
L4= random.choice("ABCDEFGH")

Конкретный вопрос, который нравился бы мне отвечать: Как я могу делать для того, чтобы ассигнование random случилось без повторения в случаях L1, L2, L3, L4? А именно, что никогда не распределил себе ту же букву.

1
задан 31.07.2019, 05:22
2 ответа

Ты можешь использовать random.sample () в Вашем месте. Это работоспособный способ получать случайную не повторенную стоимость данной последовательности. Как аргументы возьми последовательность с возможной стоимостью и nГєmero случайных элементов, которые ты хочешь получить (я доказываю k). Возврати список с элементами Гєnicos .

from random import sample

L1, L2, L3, L4 = random.sample("ABCDEFGH", 4)

Только ты должен иметь в виду, что, как он lГіgico, список возможностей должен быть равен или большим, чем nГєmero случайных результатов, которых ты стремишься к тому, чтобы достичь.

, Если ты хочешь выбрать эти элементы в различных моментах на протяжении тебя cГіdigo (или ты хочешь использовать random.choice(), потому что тебе нравится XD) ты можешь создавать генератор и каждый раз, когда ты захотел новый элемент просишь это у него используя next():

import random


def aleatorio(opciones):
    opciones = list(opciones)
    while True:
        r = random.choice(opciones)
        opciones.remove(r)
        yield r

gen = aleatorio("ABCDEFG")
L1 = next(gen)
L2 = next(gen)
L3 = next(gen)
L4 = next(gen)
4
ответ дан 03.12.2019, 18:30

Что podrГ-схвати делать, он состоит в том, чтобы перемещать буквы, которые уже вышли. Вышедшие

import random

values = list("ABCDEFGH")
L1= random.choice(values)
values.remove(L1)
L2= random.choice(values)
values.remove(L2)
L3= random.choice(values)
values.remove(L3)
L4= random.choice(values)

print(L1)
print(L2)
print(L3)
print(L4)

:

A
B
H
G

Другая soluciГіn состоит в том, чтобы заменять букву, которая вышла из-за Вышедших ""

import random

values = "ABCDEFGH"
L1= random.choice(values)
values = values.replace(L1, "")
L2= random.choice(values)
values = values.replace(L2, "")
L3= random.choice(values)
values = values.replace(L3, "")
L4= random.choice(values)

print(L1)
print(L2)
print(L3)
print(L4)

:

F
B
H
A
1
ответ дан 03.12.2019, 18:30