I have looking at the source code in the function CreateNewBlock() trying to answer myself but I am unable to understand it, looks quite complicated, so I hope anyone can answer my doubts.
How bitcoin chooses the new blocks to calculate the hashes?.
it generates a random block of data and calculate the hash without taking into account if this block was previously calculated in the past?
or it generates a random block and checks if this block was never calculated before calculating the hash for it?
If I turn off my computer, could be bitcoin tomorrow calculating the same blocks than today?