Python, Generating a random string of brackets

I want to generate random lengths and patterns of square brackets, for example, []] [[]] [[] [[]] []

I have so far managed to get my program to create parentheses randomly, but randomly in terms of how many times it generates them, so currently my program is giving me results like

[] [] [] [] [] []

[] [] []

[] [] [] [] []

Thus, in parentheses there is no randomness, only randomness in the number of displayed brackets.

I want to know how I can make the order of brackets random aswell as the number of brackets in the display.

Here is my code so far,

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,

Thank.

+3
source share
4 answers

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.

+4

; :

 finallist = [random.choice('[]') for _ in range(random.randint(1, 99))]

:

print " ".join(finallist)

, :

[ ] ] [ [ [ ] [ ] ] [
+4

, ,

finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
    ...

, , .

+4
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
+1

All Articles