/// <summary> /// Tworzy tablice wielowymiarową zawierającą ilość wystąpień poszczególnych żądań po sobie oraz prawdobodobieństwo /// takiego wystąpienia. /// </summary> private void CreateMatrix() { Probability = new float[UniqueRequest.Count, UniqueRequest.Count]; Probability.Initialize(); foreach (var session in Sessions) { for (var i = 0; i < session.Requests.Count - 1; i++) { var firstReq = session.Requests[i]; var nextReq = session.Requests[i + 1]; var posI = UniqueRequest.FindIndex(x => x.NameType == firstReq); var posJ = UniqueRequest.FindIndex(x => x.NameType == nextReq); Probability[posI, posJ]++; } } for (var i = 0; i < UniqueRequest.Count; i++) { for (var j = 0; j < UniqueRequest.Count; j++) { Probability[i, j] /= UniqueRequest[i].Quantity; } } }
/// <summary> /// Dodaje do <see cref="Sessions" /> takie <see cref="Request" /> które nie wystąpiło wcześniej /// </summary> /// <param name="request">Sprawdzane żądanie</param> public void AddUniqueRequest(Request request) { // Jeśli żądanie nie wystąpiło wcześniej to: if (UniqueRequest.FindAll(x => x.NameType == request.NameType).Count <= 0) { request.Quantity = 1; UniqueRequest.Add(request); } // Jeśli wystąpiło else { UniqueRequest .Find(x => x.NameType == request.NameType).Quantity++; } }