Definition:
From Google:
deterministic
relating to the philosophical doctrine that all events, including human action, are ultimately determined by causes regarded as external to the will.
In relation to answers on this site, this means that the user cannot determine with 100% accuracy what the output of their program will be, or the output will not be consistent and identical across multiple executions.
As simple example of a non-deterministic program is a program that prints the current system time in nanoseconds. The user has no control over the output of the program with regard to the source code, and the output of the program depends on something other than the user, the input, and the source code. The output will not be the same across multiple executions, and the user cannot determine what the output will be without running the program.
This definitions fits our criteria for our challenges because:
- Challenges require a specific solution or output, and if the program ever doesn't produce the correct solution, it's invalid.
- If you can't determine the output, you can't maintain that your answer is correct, unless the output is not required to be consistent.
Default:
The restriction that an answer should be deterministic should be a default restriction. The number of challenges that require a constant or consistent solution is far greater than the ones that do not.
If the OP posts a challenge, they can override the default by stating the non-deterministic solutions are allowed. If the challenge obviously does not require deterministic output due to its nature, then stating this is not necessary. An example of this would be a challenge where the goal is to output the current time, which obviously will not be consistent. king-of-the-hill challenges often involve randomness, so it should be allowed by default for those.