【发布时间】: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))
【问题讨论】:
我需要创建仅包含 -1 和 1 的随机列表,例如 -1,1,1,-1,-1(不包含零)。 我当前的编码添加了不适合我的 0。
import random
for x in range(10):
print (random.randint(-1,1))
【问题讨论】:
random.choice([value1, value2]),用于打印列表中的某个值,例如:
import random
num = random.choice([-1, 1])
print(num)
【讨论】:
只是想补充一点,如果你不想-1和1以相等的概率生成,并且你不想安装一些数学包(例如numpy),你也可以使用以下方法:假设您希望1s 比-1s 多 3 倍。那么这个想法是你生成一个从0 到100 的随机数。如果生成的数字大于25,则追加1,否则追加-1。
这可以用以下一行来表示:
import random
[1 if random.randint(0,100)>25 else -1 for _ in range(25)]
这是一种非常通用的方法,可以让人们轻松控制它们的分发,而无需外部依赖。
【讨论】:
以下答案包含 Lee Daniel Crocker 的评论。他应该发布他自己的答案,然后我将删除这个:
[random.randint(0,1)*2-1 for i in range(10)]
【讨论】:
另一种方法:
在0..1023中生成一个10位的随机数。
将数字表示为二进制文本字符串,确保包含所有前导零。
读取字符串,每0输出“-1”,每1输出“1”。
【讨论】:
您可以使用random.choices,它从给定序列中随机选择k 元素,从而避免了任何循环的需要:
random.choices([-1,1], k=10)
#[-1, -1, 1, 1, 1, -1, -1, 1, -1, -1]
【讨论】:
random.randint(0,1)*2-1.
[random.choice((-1, 1)) for x in range(10)]
random.choice() 从序列中选择一个随机元素。
【讨论】:
import random
for x in range(10):
print (random.choice([-1,1]))
【讨论】:
你可以使用random.choice():
>>> [random.choice([-1, 1]) for _ in range(10)]
[1, -1, 1, 1, -1, 1, -1, -1, -1, -1]
【讨论】: