An "address" in bitcoin is composed in binary form of:
[1 prefix byte] + [20 bytes of ~public key] + [4 checksum bytes] = 25 bytes
This binary form is then converted to base 58, with 58 characters valid to write it (letters and numbers, except "0, O, I, l" which are confusing). That results in the 26-35 string of characters that is commonly used.
The prefix fixes the "1" or "3" character (P2PKH, P2SH), and the last 4 bytes are calculated from the previous 21 bytes.
So those 20 bytes in the middle could be chosen randomly.
But if those 20 bytes were random the private key would be unknown, and so funds transferred to that "address" would be irrecoverable. The correct process is to choose a private random key, derivate the public from it, and then fill those 20 bytes.
So, the reasons why a random combination of 26-35 letters and numbers won't result in a valid bitcoin address, even if it starts with "1" or "3" and "0, O, I, l" are not present:
- when passed to binary, the number of bytes obtained may not be 25 exactly.
- if it mapped to 25 bytes, checksum won't validate the previous 21 bytes.
As for the last question, any address with those 20 middle bytes generated randomly and the checksum and prefix correct, is valid. It will have a zero amount of bitcoins available when checked for the first time (for example at https://blockchain.info), and any funds transferred to it will be received. There's no previous requirement.
Check this out instead (https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses). No BTC addresses are not random. I don't have the time at the moment to outline the specifics, but these addresses will most certainly be rejected by the network.
– RLH – 2013-10-31T13:48:03.687Also, even if you'd randomly generate a syntactically correct address, you won't be able to spend anything sent to it unless you own the corresponding private key. So address generation always starts from the private key. – Pieter Wuille – 2013-10-31T13:50:21.790
If you want to run some python code to validate a bitcoin address here it is: http://rosettacode.org/wiki/Bitcoin/address_validation#Python
– Jonas Oestman – 2013-10-31T14:29:42.437