Как создать начальное значение для определенного выбора в последовательности - PullRequest
1 голос
/ 10 марта 2020

У меня есть список этих целых чисел

Список = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Как мне сгенерировать начальное значение (а) использовать с модулем Random.seed (а), чтобы получить конкретный результат (в данном случае число 70)? Я хочу вызвать функцию random.choice при передаче аргумента списка. то есть random.choice (список). Мне нужно установить мое начальное значение на определенное значение, чтобы получить результат 70. И можно ли использовать начальные значения для генерации определенных результатов в списках нецелого типа, если да, то как?

Ответы [ 3 ]

2 голосов
/ 10 марта 2020

вы можете использовать:

from random import Random

def get_seed(my_list, wanted_element):
    seed = 0
    while True:
        rnd = Random(seed)
        if rnd.choice(my_list) == wanted_element:
            return seed
        seed += 1
print(get_seed(List, 70)

выход:

0

тест:

rnd = Random(0)
print(rnd.choice(List)
# 70
2 голосов
/ 10 марта 2020

случайно 0 как семя работает (по крайней мере, в моей реализации python) ...

from random import Random

List = [10, 20, 30, 40, 50 , 60, 70, 80, 90, 100]

rnd = Random(0)
ret = rnd.choice(List)
print(ret)  # 70

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

random.choice можно использовать для последовательностей любого типа.

0 голосов
/ 10 марта 2020

Я не уверен, что вы имели в виду, но используя грубую силу:

import random

def random_seed(List, number):
    s = 0
    while True:
        random.seed(s)
        if List[random.randint(0, len(List))] == number:
            return s
        s += 1


List = [10, 20, 30, 40, 50 ,60, 70, 80, 90, 100]

print("seed:", random_seed(List, 70))

Вывод:

seed: 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...