Ejemplo n.º 1
0
        /// <summary>
        /// Normal randomly-distributed N-dimensional array elements.
        /// </summary>
        /// <param name="dimensions">int array or single int paramters specifying
        /// dimensions for new array to be created.</param>
        /// <returns>N-dimensional array filled with random numbers.</returns>
        /// <remarks>The elements lie within the range 0.0 ... 1.0 and are choosen to be normally
        /// distributed.</remarks>
        public static ILArray <double> randn(params int[] dimensions)
        {
            ILDimension dim;

            if (dimensions.Length == 1)
            {
                dim = new ILDimension(dimensions[0], dimensions[0]);
            }
            else
            {
                dim = new ILDimension(dimensions);
            }
            if (m_nrandomGenerator == null)
            {
                m_nrandomGenerator = new ILNRandom(Environment.TickCount);
            }
            double[] data = ILMemoryPool.Pool.New <double>(dim.NumberOfElements);
            unsafe
            {
                fixed(double *pRetArray = data)
                {
                    double *pCurIdx      = pRetArray;
                    double *pLastElement = pCurIdx + dim.NumberOfElements;

                    while (pCurIdx < pLastElement)
                    {
                        *pCurIdx++ = m_nrandomGenerator.NextDouble();
                    }
                }
            }
            return(new ILArray <double>(data, dim));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Set seed to both rand and randn functions
 /// </summary>
 /// <param name="seed">Any ole' number will do</param>
 public static void setseed(int seed)
 {
     m_nrandomGenerator = new ILNRandom(seed);
     m_randomGenerator  = new Random(seed);
 }