我希望生成随机长度和方括号图案,例如, []] [[]] [[] [[]] []
到目前为止,我设法让我的程序随机生成括号,但随机生成它们的次数,所以目前我的程序给我的结果如,
[] [] [] [] [] []
[] [] []
[] [] [] [] []
因此括号内没有随机性,只显示括号中的随机性。
我想知道如何将括号的顺序随机ASWELL作为显示的括号数量。
到目前为止,这是我的代码,
import random
import string
def randomGen(N):
return random.randint(1,N)
char1 = '['
char2 = ']'
finalist = []
newList = []
newList2 = []
newValue = randomGen(99)
for i in range(newValue):
newList = char1
newList2 = char2
finalist.append(newList + newList2)
for everChar in finalist:
print everChar,
感谢。
答案 0 :(得分:4)
您可以使用random.sample
选择放置位置的索引,例如左括号。然后在其他地方放置右括号:
In [119]: import random
In [122]: N = 10
In [125]: idx = set(random.sample(range(N), N//2))
In [126]: idx
Out[126]: {0, 1, 4, 5, 7}
In [127]: ''.join(['[' if i in idx else ']' for i in range(N)])
Out[127]: '[[]][[][]]'
根据你的例子,我假设你想要相同数量的左右括号。如果没有,请使用jonrsharpe的解决方案。
答案 1 :(得分:4)
您需要从两个角色中随机选择;你可以在一行中完成这一切:
finallist = [random.choice('[]') for _ in range(random.randint(1, 99))]
您还可以简化输出:
print " ".join(finallist)
我跑的一个例子:
[ ] ] [ [ [ ] [ ] ] [
答案 2 :(得分:4)
好吧,如果您只想修改代码,可以直接执行
finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
...
如果您想要有效且更好的方法,请查看其他答案。
答案 3 :(得分:1)
import random
import string
def randomGen(N):
return random.randint(1,N)
length_to_generate = randomGen(99)
finalist = []
for i in range(length_to_generate):
if random.randint(0, 1):
finalist.append("[")
else:
finalist.append("]")
for everChar in finalist:
print everChar,
您还可以生成字符串而不是列表:
length_to_generate = randomGen(99)
finalist = ""
for i in range(length_to_generate):
if random.randint(0, 1):
finalist += "]"
else:
finalist += "["
print finalist