【问题标题】:How to generate the seed value for a particular choice in a sequence如何为序列中的特定选择生成种子值
【发布时间】:2020-06-22 08:11:09
【问题描述】:

我有一个这些整数的列表

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

如何生成种子值 (a) 以与 Random.seed(a) 模块一起使用以获得特定结果(在本例中为数字 70)? 我想在传递 list 参数时调用 random.choice 函数。即随机选择(列表)。我需要将种子设置为特定值才能获得 70 的结果。 我可以使用种子值在非整数类型列表中生成特定结果吗?如果可以的话,该怎么做?

【问题讨论】:

  • 除非您使用自定义的、糟糕的随机数生成器,否则我认为这不太可行。
  • 我不确定我是否理解这个问题。 random.seed 总是返回 None,所以你不能让它返回 70。或者你的意思是你在调用 random.seed 之后从 random 调用另一个函数?你打电话给哪个?
  • 我想在传递 list 参数时调用 random.choice 函数。即随机选择(列表)。我需要将种子设置为特定值才能获得 70 的结果。

标签: python python-3.x list random random-seed


【解决方案1】:

偶然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 可用于任何类型的序列。

【讨论】:

    【解决方案2】:

    我不确定这是否是您的意思,但使用蛮力:

    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
    

    【讨论】:

    • 有趣的是,List = [70] 失败了,其中 any 种子应该是好的。
    • 这有效,当种子值设置为 0 即 random.seed(0) 时,random.randint 总是导致 70 。 List[random.randint(0, len(List))] 结果是70。我也用这个方法来确定列表中其他数字的种子值。谢谢。
    【解决方案3】:

    你可以使用:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 2019-08-27
      • 2013-03-01
      • 1970-01-01
      • 2018-09-13
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多