Non-concurrent programs are generally deterministic, as they follow a single thread of execution with a predictable order of operations. However, non-deterministic behaviour can still occur, due to factors such as user input, random number generation, or reliance on external systems. Thus, while non-concurrent programs inherently possess a more predictable nature, determinism is not guaranteed.