Mine have always been run via spreadsheets. I did all the assignments via Random.org. In South Park, I ran both the roster and the roles through randomized lists, and put them into a spreadsheet to see who got what.
In EOW, I had Random.org roll random numbers so I could assign all the mafia first, because I had to get their assignments out first. Then once they decided to recruit <Bious> I rolled another number to see who was <Bious>. After that, I just plugged the rest of the players into Random.org to see who got what civ role.
I actually lost the link to the package Forge, I would be interested in using that in my next game, which I think will have a more straightforward role assignment.
I should probably post that here, actually, seeing how it’s a useful tool mafia gming. I’ll do it later today.
I should also probably work on an easier input method, like reading a txt file or something. I don’t quite know how to work file browsing with GUI using Java though. :c