/// <summary>
        /// Invoke the strategy.
        /// </summary>
        /// <param name="weightArr">The connection weight array to apply mutations to.</param>
        /// <param name="rng">Random source.</param>
        public void Invoke(double[] weightArr, IRandomSource rng)
        {
            // Select a subset of connection genes to mutate.
            int[] selectedIdxArr = _selectionStrategy.SelectSubset(weightArr.Length, rng);

            // Loop over the connection genes to be mutated, and mutate them.
            for (int i = 0; i < selectedIdxArr.Length; i++)
            {
                weightArr[selectedIdxArr[i]] += _weightDeltaSampler.Sample(rng);
            }
        }
        public void Invoke(double[] weightArr)
        {
            // Select a subset of connection genes to mutate.
            int[] selectedIdxArr = _selectionStrategy.SelectSubset(weightArr.Length);

            // Loop over the connection genes to be mutated, and mutate them.
            for (int i = 0; i < selectedIdxArr.Length; i++)
            {
                weightArr[selectedIdxArr[i]] += _dist.Sample();
            }
        }