The placement is pseudo-random. It picks a random location and then determines if it's viable. Viability is determined by tile type. The game then, based on your civ, looks for a tile in that area. The tile is called your 'starting bias'. It attempts to put you close (or far from in certain cases) as many of those tiles as possible.
For example, Greek has a starting bias of 'Coast'. So the game will start you basically as close to a cost as possible.
Byzantine, Greek, Korean, Japanese, Indonesian, Portugese, Venetian, English, Danish, Ottoman, Carthaginian, Spanish and Polynesians all have 'Coast' as their starting bias and will spawn close to water.
Arabian and Morroccan both have 'Desert' and will spawn you in the middle of a desert if possible.
Aztec and Brazillian both have 'Jungle'
Iroquiois and Celtic both have 'Forest'
Indian and Dutch have 'Grassland'
Russian and Sweedish have 'Tundra'
Mongolian, Polish, Shoshone all have 'Plains'
Austrian and Incan have 'Hill'
Zulu, Hunnic and Egyptian have 'Avoid Jungle'
Egyptian, Hunnic, and Siamese have 'Avoid Forest'
If you want to change them you can AT YOUR OWN RISK
in this file
C:\Program Files (x86)\Steam\SteamApps\common\sid meier's civilization
For expansions check
C:\Program Files (x86)\Steam\SteamApps\common\sid meier's civilization\assests\DLC\DLC_xx\CIV5Civillization_CIVNAME.xml
When the game searches for a viable tile from its initial random location, it will seem to only check so far before giving up and then placing you on a different tile. I don't know how it decides second choice nor how far it looks before giving up. I have had it happen where a Civ was not near their starting bias because it didn't exist anywhere near. With multiple players, human or computer, this chance increases in some case......