Write a code in python which rolls 3 d20 dice, then sums the two highest rolls and gets rid of the lowest roll. make this repeat 100 times and form a histogram for frequencies of each number at the end of the loop.
Here's a Python code that rolls 3 d20 dice, then sums the two highest rolls and gets rid of the lowest roll. It repeats this process 100 times and forms a histogram for frequencies of each number at the end of the loop:
```
import random
import matplotlib.pyplot as plt

rolls = []
for i in range(100):
    dice = [random.randint(1, 20) for _ in range(3)]
    rolls.append(sum(sorted(dice)[1:]))
    
plt.hist(rolls, bins=range(3, 41))
plt.xlabel('Sum of two highest rolls')
plt.ylabel('Frequency')
plt.title('Histogram of dice rolls')
plt.show()
```

Explanation:

We start by importing the necessary modules: random to generate random numbers and matplotlib.pyplot to plot the histogram.
We create an empty list called rolls to store the results of each roll.
We use a for loop to repeat the roll process 100 times. In each iteration of the loop:
We generate a list called dice containing 3 random integers between 1 and 20 (inclusive) using a list comprehension and the random.randint() function.
We sort the list in ascending order using the sorted() function and slice off the first element (i.e., the lowest roll) using [1:].
We sum the remaining two elements using the sum() function and append the result to the rolls list.
Finally, we plot the histogram of the rolls list using plt.hist(), with bins set to a range of integers from 3 (the minimum possible sum of two highest rolls) to 40 (the maximum possible sum of two highest rolls), and add labels and a title to the plot using plt.xlabel(), plt.ylabel(), and plt.title().