There's no out-of-the-box way to do this, but it's definitely achievable through cloud code. You'll need to obtain a list of all virtual goods (through Spark.getConfig()); and a list of the player's virtual goods (through Spark.getPlayer()) and compare the two; building an array of shortcodes that are in the first list, but not the second. You can then choose which one to award by generating a random number between 0 and the array's length and using this number to index into the array.
Regarding informing the player of the award; how you go about this would depend on the flow of your game/matches. If you're using our challenges for this your could add the details of the awarded good to the ChallengeWonMessage's scriptData. If you're using your own implementation you could send a message to the player through cloud code (Spark.message).
Hope this helps. If you run into any further issues please let us know.