Q:

How to calculate random subnet first/last address

Lets say I have to create 256 subnets (it could be any number), how would I find the first and last (network/broadcast addresses) for a randomly chosen subnet? For instance, subnet 139. 
I'll give an example. 
Network IP: 145.0.0.0/8 
This IP needs to be subsetted into 300 subnets. 
Network mask: 255.0.0.0
Network address (first address):145.0.0.0/8 
Broadcast address: 145.255.255.255/8
Number of hosts: 2^(32-8) = 16777216
Addresses/subnet: 65536 (16777216/256)
Subnet mask: /16 
I'm not really concerned about usable addresses, just trying to understand a concept. 
The first subnet would be:
Network address: 145.0.0.0/16
Broadcast Address: 145.0.255.255
So, is there a formula or method to finding a randomly picked subnet's network/broadcast address? 

A:

Take the subnet number, subtract one (the first one is 0), and put that in the subnet part of the address. In your example, 145.0.0.0/8 will have 256 /16 subnets. The 139th subnet will be 145.138.0.0/16. You only need the subnet and the mask to figure out anything else.
To do this correctly (otherwise you can make some serious mistakes with non-octet bounded networks), you need to do it in binary. See this answer for how to do all the calculations.

