Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python, Generating random string of brackets

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

I have so far managed to get my program to generate brackets randomly, but randomly in terms of how many times it generates them, so currently my program is giving me results such as,

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

[] [] []

[] [] [] [] []

So there is no randomness within the brackets, only randomness in the number of brackets displayed.

I want to know how I can make the order of the brackets random ASWELL as the amount of brackets on show.

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,

Thanks.

like image 907
Baileyavfc Avatar asked Jun 20 '26 02:06

Baileyavfc


1 Answers

You could use random.sample to select the index for where to place, say, left brackets. Then place right-brackets everywhere else:

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]: '[[]][[][]]'

Given your examples, I assumed you want an equal number of left and right brackets. If not, use jonrsharpe's solution.

like image 54
unutbu Avatar answered Jun 22 '26 15:06

unutbu



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!