Esempio n. 1
0
 private bool changeStateEvent(int previousState)
 {
     if (changeStateEventMatrix[previousState][currentState] < changeStateEventGenerator.nextValue())
     {
         return(true);
     }
     return(false);
 }
Esempio n. 2
0
        /// <summary>
        /// Переход в новое состояние потока
        /// </summary>
        protected virtual void selectState()
        {
            //текущее время полагается равным времени окончания пребывания потока в текущем состоянии
            currentTime  = timeInCurrentState;
            currentState = -1;
            double[] pos   = changeStateMatrix[currentState];
            double   value = stateSelector.nextValue();
            int      i     = 0;

            while (i < pos.Length && value > pos[i])
            {
                i++;
            }
            if (i < pos.Length)
            {
                currentState = i;
            }
            else
            {
                currentState = countOfStates - 1;
            }

            timeInCurrentState = timeInStateGenerator[currentState].nextValue();
        }