public static NETExpression CreateRandom(int intensity) { int positionValue = random.Next(0, intensity - 1); List <Instruction> instructions = new List <Instruction>(); instructions.Add(OpCodes.Ldc_I4.ToInstruction(random.Next())); instructions.Add(OpCodes.Ldc_I4.ToInstruction(random.Next())); for (int i = 0; i < intensity; i++) { instructions.Add(GetRandomOperator().ToInstruction()); if (positionValue == i) { instructions.Add(OpCodes.Ldarg_0.ToInstruction()); } else { instructions.Add(OpCodes.Ldc_I4.ToInstruction(random.Next())); } } instructions.Add(GetRandomOperator().ToInstruction()); instructions.Add(OpCodes.Ret.ToInstruction()); return(new NETExpression() { Instructions = instructions }); }
public static List <T> Shuffle <T>(List <T> array, out int[] position) { RandomGen rand = new RandomGen(); List <KeyValuePair <int, T> > list = new List <KeyValuePair <int, T> >(); foreach (T s in array) { list.Add(new KeyValuePair <int, T>(rand.Next(), s)); } var sorted = from item in list orderby item.Key select item; T[] result = new T[array.Count]; int index = 0; foreach (KeyValuePair <int, T> pair in sorted) { result[index] = pair.Value; index++; } List <int> positions = new List <int>(); for (int i = 0; i < array.Count; i++) { positions.Add(Array.IndexOf(array.ToArray(), result[i])); } position = positions.ToArray(); return(result.ToList()); }
public Instruction[] Create() { int positionValue = r.Next(0, intensity); List <Instruction> instructions = new List <Instruction>(); instructions.Add(OpCodes.Ldc_I4.ToInstruction(r.Next())); instructions.Add(OpCodes.Ldc_I4.ToInstruction(r.Next())); for (int i = 0; i < intensity; i++) { instructions.Add(getRandomOperation().ToInstruction()); if (positionValue == i) { instructions.Add(OpCodes.Ldarg_0.ToInstruction()); } else { instructions.Add(OpCodes.Ldc_I4.ToInstruction(r.Next())); } } instructions.Add(getRandomOperation().ToInstruction()); instructions.Add(OpCodes.Ret.ToInstruction()); return(instructions.ToArray()); }