【问题标题】:Random list only with -1 and 1仅包含 -1 和 1 的随机列表
【发布时间】:2019-12-01 06:30:00
【问题描述】:

我需要创建仅包含 -1 和 1 的随机列表,例如 -1,1,1,-1,-1(不包含零)。 我当前的编码添加了不适合我的 0。

import random
for x in range(10):
    print (random.randint(-1,1))

【问题讨论】:

    标签: python list random


    【解决方案1】:

    random.choice([value1, value2]),用于打印列表中的某个值,例如:

    import random
    
    num = random.choice([-1, 1])
    print(num)
    

    【讨论】:

      【解决方案2】:

      只是想补充一点,如果你不想-11以相等的概率生成,并且你不想安装一些数学包(例如numpy),你也可以使用以下方法:假设您希望1s 比-1s 多 3 倍。那么这个想法是你生成一个从0100 的随机数。如果生成的数字大于25,则追加1,否则追加-1

      这可以用以下一行来表示:

      import random
      [1 if random.randint(0,100)>25 else -1 for _ in range(25)]
      

      这是一种非常通用的方法,可以让人们轻松控制它们的分发,而无需外部依赖。

      【讨论】:

        【解决方案3】:

        以下答案包含 Lee Daniel Crocker 的评论。他应该发布他自己的答案,然后我将删除这个:

        [random.randint(0,1)*2-1 for i in range(10)]
        

        【讨论】:

          【解决方案4】:

          另一种方法:

          1. 在0..1023中生成一个10位的随机数。

          2. 将数字表示为二进制文本字符串,确保包含所有前导零。

          3. 读取字符串,每0输出“-1”,每1输出“1”。

          【讨论】:

            【解决方案5】:

            您可以使用random.choices,它从给定序列中随机选择k 元素,从而避免了任何循环的需要:

            random.choices([-1,1], k=10)
            #[-1, -1, 1, 1, 1, -1, -1, 1, -1, -1]
            

            【讨论】:

            • 这比列表理解快 2 倍以上
            • 或者没有列表:random.randint(0,1)*2-1.
            【解决方案6】:
            [random.choice((-1, 1)) for x in range(10)]
            

            random.choice() 从序列中选择一个随机元素。

            【讨论】:

              【解决方案7】:
              import random
              for x in range(10): 
                  print (random.choice([-1,1]))
              

              【讨论】:

                【解决方案8】:

                你可以使用random.choice():

                >>> [random.choice([-1, 1]) for _ in range(10)]
                [1, -1, 1, 1, -1, 1, -1, -1, -1, -1]
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2022-01-22
                  • 2012-11-22
                  • 2019-09-22
                  • 2020-02-24
                  • 1970-01-01
                  • 2023-01-19
                  • 2012-01-10
                  • 1970-01-01
                  相关资源
                  最近更新 更多