An algorithm that, even for the same input, can exhibit different behaviors on different runs, as opposed to a deterministic algorithm.