Just to make sure that I have this correct, you sort the data so that you can suppress rows based on the random number. Once the rows are suppressed you want to display the report in name order.
I guess my first question is how are you getting the data? Since this is an application, I would think that you have access to the db and can create a stored proc, which is by far the easiest method to get data for a report. In the stored proc, I would delete/omit the rows that would be suppressed, then just build the report based on Name.
Here's the problem, if you have a group that is based on the random number, and that is your highest group, then regardless of what grouping you add, it will first be sorted by the random number, so any subgroup would be for people with the same random number (which is unlikely). If you can filter the data without the grouping, say in the reports/selection formula/records, then your grouping can be on the name.
Hopefully you can see how CR is applying the grouping, because once you can understand that, you can figure out how to make CR do what you want...or see why it can't be done.
HTH