What table is that sample data from that you posted?
I don't think you are understanding my method. My method is a two step one, that first selects a category (A, B, C, D) which are weighted per your specifications. And then using that category randomly selects a product which is in that category.
They key to this process is to create a table (called Weighted) which properly weighs the categories. To make Category A have a 90% chance of being selected, you Weighted would look like this:
WeightedID, WeightedCategory
1, A
2, A
3, A
...
89, A
90, A
91, B
92, B
93, B
94, B
95, B
96, C
97, C
98, C
99, C
100, D
Then you randomly generate a number 1-100, whichever WeightedID it corresponds to in the Weighted table you make that the category you choose in your products table. Next, you generate another random number and use it to select a specific record in your products table.
Additionally, this could also be done via code entirely without the Weighted table. However, even then the key is to generate 2 random numbers. The first determines the category, the second would select the specific record.