//Todo Criteria so machen dass man die gewichtung nur einmal für alle ändern muss /// <summary> /// returns p count of Entries with 4 Criteria. The values of the Criteria are uniformly distributed(random). /// </summary> /// <param name="p">how many entries to generate</param> /// <returns>entries generated by random</returns> public static List <Participant> DummyEntries(IValueGenerator valueGenerator, int p, int numHet, int dimHet, int numHom, int dimHom, IRule _rule = null) { List <Participant> loEntries = new List <Participant>(); List <float>[] values = new List <float> [(numHet * dimHet) + (numHom * dimHom)]; // store values here for (int i = 0; i < (numHet * dimHet) + (numHom * dimHom); i++) { // generate values for one specific dimension of a criterion for p players values[i] = valueGenerator.GenerateValues(0, 1, p); } for (int i = 0; i < p; i++) { System.Console.Out.WriteLine("Generating participant " + i + ".."); List <Criterion> loCriteria = new List <Criterion>(); //pseudoCriteria for (int j = 1; j <= numHet; j++) { SpecificCriterion c = new Criteria.SpecificCriterion("Khet" + j, dimHet, 0, 1, false, 1); loCriteria.Add(c); for (int k = 1; k <= dimHet; k++) { c.Value[k - 1] = values[(j * k) - 1][i]; } } for (int j = 1; j <= numHom; j++) { SpecificCriterion c = new Criteria.SpecificCriterion("Khom" + j, dimHom, 0, 1, true, 1); loCriteria.Add(c); for (int k = 1; k <= dimHom; k++) { c.Value[k - 1] = values[((numHet * dimHet) + j * k) - 1][i]; } } Participant participant = new Participant(loCriteria); loEntries.Add(participant); } if (_rule != null) { foreach (Participant part in loEntries) { _rule.AdjustParticipant(part); } } return(loEntries); }