The Dual or Arbitrary is Coarbitrary. To understand how this works, see CoArbitrary in Haskell (SO Answer).

In case one wants to randomly generate functions, one will need to use a Coarbitrary constraint to implement that function's Arbitrary instance.

Implementing Coarbitrary isn't hard. Looking at Number's instance, Boolean's instance, and Char's instance, you can start to see a pattern.