Is there any functionality like randomly specifying freezing portion and freezing period .For example, we must transfer 100,000 ERC20 tokens to a users. We transfer 10,000 tokens with no restriction, 40,000 tokens with 3 months freezing, and 50,000 tokens with 5 months freezing.
This all depends on the token contract as all the transfer are performed inside the contract.
Basically the contract supports whatever functionality you/someone writes in it. If there is no freezing functionality, it can't be added after deployment. Similar functionality can be achieved for example with some sort of escrow service but the token contract itself only supports what was coded in it initially.