1. A random utility generation system comprising: at least one processor; and at least one memory coupled to the at least one processor having stored thereon instructions which, when executed by the at least one processor, causes the at least one processor to perform operations comprising: accessing configuration data that is descriptive of benchmark program complexity and scale; setting configuration parameters used in generating random benchmark programs based on the accessed configuration data; accessing predefined code elements that are used in generating random benchmark programs; constructing a random benchmark program that has the benchmark program complexity and scale based on the accessed code elements and the set configuration parameters; generating a reachability matrix for the random benchmark program that shows reachability of code within the random benchmark program; and outputting the random benchmark program.