Blockhash(block.number)

Hey guys, I’ve seen posts in which people talk about using blockhash(block.number-1) as a source of randomness, and this is known to be insecure. I’ve also seen posts in which people talk about using hash value of future blocks such as blockhash(block.number) as a source of randomness to defend against miners’ manipulation. I did a little test, and this quantity is always 0. I am wondering if by any chance, it could be a non-zero random value. Also is it true that the hash value of the current block is beyond miners’ control. All they can do is get a hash value and discard it if it does not suite their interests. Thanks.