Deterministic software is software whose output is always exactly the same given the same input, regardless of when or how often the software is run. This makes it extremely predictable.
Non-deterministic software is software where the outcome is not always exactly the same given the same input.
A variable outcome can be due to chance, timing, variable external sources (API's, data sources that change), parallel processing, or because the software moves along with a model that is constantly adapting. An example of this is generative AI: the same prompt can another output yield, depending on settings and context.
See also generative AI
