# Swapping consecutive element in a list with a probability in Python

## Question:

I want to swap consecutive elements in list with a probability. For example, I have this list:

```
l=[1,2,3,4,5,6,7,8,9,10,11]
```

I wrote the following code thats swap the consecutive elements

```
length=len(l) if len(l)%2==0 else len(l)-1
for i in range(0,length,2):
l[i],l[i+1]=l[i+1],l[I]
```

The above code results in the following :

```
l=[2,1,4,3,6,5,8,7,10,9,11]
```

However, what I want to do is to use a probability for the swap. Let’s assume the probability of a swap is 50%. So only 50% of time the swap will happen. Any idea how to achieve this?

## Answers:

If you are writing code that needs some sort of probability, you are guaranteed to only find a possible solution using the random library.

A possible way to solve it is to choose from a choice of true and false and implement the swap when true. Since there are only two possible choices, (true and false), and you are choosing at random(pseudo-random actually), there is a 50% chance of picking each one.

That will look like this:

```
import random
l=[1,2,3,4,5,6,7,8,9,10,11]
length=len(l) if len(l)%2==0 else len(l)-1
for i in range(0,length,2):
if random.choice([True, False]): #only swap is true is chosen
l[i],l[i+1]=l[i+1],l[i]
```

That should a be a useful workaround.

I can’t help but wonder why you need that particular behaviour though.