예제 #1
0
        /// <summary>
        /// Return a batch of items.
        /// </summary>
        /// <param name="random">Specifies the random number generator.</param>
        /// <param name="nCount">Specifies the number of items to sample.</param>
        /// <param name="dfBeta">Not used.</param>
        /// <returns>The array of items is returned.</returns>
        public MemoryCollection GetSamples(CryptoRandom random, int nCount, double dfBeta)
        {
            if (m_rgWts == null || m_rgWts.Length != nCount)
            {
                m_rgWts = new double[nCount];
                for (int i = 0; i < m_rgWts.Length; i++)
                {
                    m_rgWts[i] = 1.0;
                }
            }

            if (m_rgIdx == null || m_rgIdx.Length != nCount)
            {
                m_rgIdx = new int[nCount];
            }

            MemoryCollection mem = new MemoryCollection(nCount);

            if (m_bPreLoaded)
            {
                for (int i = 0; i < nCount; i++)
                {
                    mem.Add(m_mem[m_nSampleIdx]);
                    m_nSampleIdx++;

                    if (m_nSampleIdx == m_mem.Count)
                    {
                        m_nSampleIdx = 0;
                    }
                }
            }
            else
            {
                mem = m_mem.GetRandomSamples(random, nCount);
            }

            mem.Indexes    = m_rgIdx;
            mem.Priorities = m_rgWts;

            return(mem);
        }
예제 #2
0
        /// <summary>
        /// Return a batch of items.
        /// </summary>
        /// <param name="random">Specifies the random number generator.</param>
        /// <param name="nCount">Specifies the number of items to sample.</param>
        /// <param name="dfBeta">Not used.</param>
        /// <returns>The random array of items is returned.</returns>
        public MemoryCollection GetSamples(CryptoRandom random, int nCount, double dfBeta)
        {
            if (m_rgWts == null || m_rgWts.Length != nCount)
            {
                m_rgWts = new double[nCount];
                for (int i = 0; i < m_rgWts.Length; i++)
                {
                    m_rgWts[i] = 1.0;
                }
            }

            if (m_rgIdx == null || m_rgIdx.Length != nCount)
            {
                m_rgIdx = new int[nCount];
            }

            MemoryCollection mem = m_mem.GetRandomSamples(random, nCount);

            mem.Indexes    = m_rgIdx;
            mem.Priorities = m_rgWts;

            return(mem);
        }