Like having 1 be the most common number and 6 be the least common number. And everything else just leveling out.
You could set up an array of say 42 integers with numbers :
You then get a true random number between 0 and 41 and the appropriate number from the array.
In the above setup a 1 is 6 times more likely to occur than a 6, and twice as likely as a three. You can play with the contents of the array to get the distribution you require.
What you're looking for is Fitness proportionate selection.
The way to imagine this is to visualise a game where we spin a wheel to win prizes.
The best prizes have smaller segments (and are less likely to be won) and the rubbish prizes have huge segments (and are more likely to be won).
Here's how I would implement this:
Assign (or calculate) the likelihood of each of your items occurring.
1 60% 2 30% 3 4% 4 3% 5 2% 6 1%
We'll turn these into decimals because this will be easier to work with now. The only important thing is that these values add up to one:
1 60% .6 2 30% .3 3 4% .04 4 3% .03 5 2% .02 6 1% .01
Next calculate the cumulative values for each item in your array:
1 60% .6 2 30% .9 3 4% .94 4 3% .97 5 2% .99 6 1% 1.00
Then generate a random number between 0 and 1.
Find the position in your cumulative array where this random number would be inserted. The value at this position is the value that has been selected.
For example - if we generate 0.5 that would be inserted at the first element of your array, so we select 1.
If we generate 0.7 that would fit into the next position so we select 2, and so on.