Question: How to distribute English alphabet letters among Boggle game dice? How to make rolling for example letter "A" more often than others? How to choose how many copies of each letter to make, and how many copies of them to put on one dice? Can you please answer to these questions?

Answer: 
Let's work with Scrabble tiles (without blanks) instead of Boggle dice, just to keep things as simple as possible. (At the end, you can make your Boggle dice by sticking the Scrabble tiles onto them.) Suppose we have $n$ tiles, with $n \ge 26$, and a table of letter frequencies (for instance, [this one](http://en.wikipedia.org/wiki/Letter_frequency)), which we convert to probabilities by dividing by 100.

The first thing to do is to pick each letter once (assuming that you want all letters to occur at least once). Then subtract $1/n$ from each letter frequency to account for this, and set $n = n - 26$. This might make some of the letter frequencies negative, so we discard those letters, and renormalise the remaining frequencies so that they add up to $1$ (that is, if $S$ is the sum of the remaining frequencies, we multiply each frequency by $1/S$.) 

Now just do the following (**Updated** to work correctly):

```
for (i = 1 to n) {
  Pick the letter L with the largest frequency
  Subtract 1/n from L's frequency
}

```

That's how I would do it, anyway.
I've just written a simple python program to do this, and am looking for the actual letters that occur on the dice.

You want a 16 element array, each element of which is a 6-element array of ints.

```
import array
lets = [array.array('i',[0]*6)]*16

```

constructs the required array. Then you put the appropriate character codes in. (Or something like this -- I can't remember the array type codes apart from i, so I just used that, together with

```
import random
lets[i][j] = random.randrange(26) + 'A'.encode('UTF-8')[0]

```

this gives each letter equal probability. You then need to replace this line with something that, for each i and j, gets the right letter for an actual Boggle game.

Then you do

```
a = []
for i in range(16):
    a.append(random.choice(lets[i]))

```

to get an array of 16 letters.

Finally,

```
for i in range(16):
    print(a[i],end=' ')
    if i % 4 == 3:
         print()

```

will print out a nice 4x4 grid, like

```
I O S O 
C O O S 
C C U P 
S U I U

```

and this final example shows why you need to manually set the letter choices rather than picking random letters from the alphabet.

<http://thewikiman.allsup.co/BogglePlay> has a complete Python script for this.