How Do You Create Users from Contacts?
I've done this a few times using the User Import module. You just get a contact listing of all the contacts in CiviCRM that need an account (for example, all of the contacts in a particular group or those that are returned from a particular search) and then do a simple CSV export of the relevant information.

You could export the email address, first name, last name, and then edit the list in a spreadsheet if you need to generate custom usernames or passwords. The module will allow you to construct usernames on the fly by using multiple fields. You can optionally abbreviate them as well, so you could do a username as any of the following without any extra editing of the CSV data: 


FirstLast
FLast
FirstL


The module will also allow you to send the welcome email (or a custom welcome email), assign roles, and more.