Lines Matching refs:Rand
27 MutationDispatcher::MutationDispatcher(Random &Rand, in MutationDispatcher() argument
29 : Rand(Rand), Options(Options) { in MutationDispatcher()
63 static char RandCh(Random &Rand) { in RandCh() argument
64 if (Rand.RandBool()) in RandCh()
65 return static_cast<char>(Rand(256)); in RandCh()
67 return Special[Rand(sizeof(Special) - 1)]; in RandCh()
77 Rand.Rand<unsigned int>()); in Mutate_Custom()
100 Rand.Rand<unsigned int>()); in Mutate_CustomCrossOver()
113 Rand(std::min(Size, (size_t)8)) + 1; // [1,8] and <= Size. in Mutate_ShuffleBytes()
114 size_t ShuffleStart = Rand(Size - ShuffleAmount); in Mutate_ShuffleBytes()
116 std::shuffle(Data + ShuffleStart, Data + ShuffleStart + ShuffleAmount, Rand); in Mutate_ShuffleBytes()
123 size_t N = Rand(Size / 2) + 1; in Mutate_EraseBytes()
125 size_t Idx = Rand(Size - N + 1); in Mutate_EraseBytes()
135 size_t Idx = Rand(Size + 1); in Mutate_InsertByte()
138 Data[Idx] = RandCh(Rand); in Mutate_InsertByte()
148 size_t N = Rand(MaxBytesToInsert - kMinBytesToInsert + 1) + kMinBytesToInsert; in Mutate_InsertRepeatedBytes()
150 size_t Idx = Rand(Size + 1); in Mutate_InsertRepeatedBytes()
155 Rand.RandBool() ? Rand(256) : (Rand.RandBool() ? 0 : 255)); in Mutate_InsertRepeatedBytes()
164 size_t Idx = Rand(Size); in Mutate_ChangeByte()
165 Data[Idx] = RandCh(Rand); in Mutate_ChangeByte()
172 size_t Idx = Rand(Size); in Mutate_ChangeBit()
173 Data[Idx] ^= 1 << Rand(8); in Mutate_ChangeBit()
189 Rand.RandBool(); in ApplyDictionaryEntry()
190 if (Rand.RandBool()) { // Insert W. in ApplyDictionaryEntry()
192 size_t Idx = UsePositionHint ? DE.GetPositionHint() : Rand(Size + 1); in ApplyDictionaryEntry()
199 UsePositionHint ? DE.GetPositionHint() : Rand(Size + 1 - W.size()); in ApplyDictionaryEntry()
216 bool HandleFirst = Rand.RandBool(); in MakeDictionaryEntryFromCMP()
236 return DictionaryEntry(W, Positions[Rand(NumPositions)]); in MakeDictionaryEntryFromCMP()
246 if (Rand.RandBool()) Arg1 = Bswap(Arg1); in MakeDictionaryEntryFromCMP()
247 if (Rand.RandBool()) Arg2 = Bswap(Arg2); in MakeDictionaryEntryFromCMP()
248 T Arg1Mutation = static_cast<T>(Arg1 + Rand(-1, 1)); in MakeDictionaryEntryFromCMP()
249 T Arg2Mutation = static_cast<T>(Arg2 + Rand(-1, 1)); in MakeDictionaryEntryFromCMP()
264 switch (Rand(4)) { in Mutate_AddWordFromTORC()
266 auto X = TPC.TORC8.Get(Rand.Rand<size_t>()); in Mutate_AddWordFromTORC()
270 auto X = TPC.TORC4.Get(Rand.Rand<size_t>()); in Mutate_AddWordFromTORC()
271 if ((X.A >> 16) == 0 && (X.B >> 16) == 0 && Rand.RandBool()) in Mutate_AddWordFromTORC()
277 auto X = TPC.TORCW.Get(Rand.Rand<size_t>()); in Mutate_AddWordFromTORC()
281 auto X = TPC.MMT.Get(Rand.Rand<size_t>()); in Mutate_AddWordFromTORC()
307 DictionaryEntry &DE = D[Rand(D.size())]; in AddWordFromDictionary()
320 size_t ToBeg = Rand(ToSize); in CopyPartOf()
321 size_t CopySize = Rand(ToSize - ToBeg) + 1; in CopyPartOf()
324 size_t FromBeg = Rand(FromSize - CopySize + 1); in CopyPartOf()
338 size_t CopySize = Rand(MaxCopySize) + 1; in InsertPartOf()
339 size_t FromBeg = Rand(FromSize - CopySize + 1); in InsertPartOf()
341 size_t ToInsertPos = Rand(ToSize + 1); in InsertPartOf()
361 if (Size == MaxSize || Rand.RandBool()) in Mutate_CopyPart()
370 size_t B = Rand(Size); in Mutate_ChangeASCIIInteger()
383 switch(Rand(5)) { in Mutate_ChangeASCIIInteger()
388 case 4: Val = Rand(Val * Val); break; in Mutate_ChangeASCIIInteger()
402 size_t ChangeBinaryInteger(uint8_t *Data, size_t Size, Random &Rand) { in ChangeBinaryInteger() argument
404 size_t Off = Rand(Size - sizeof(T) + 1); in ChangeBinaryInteger()
407 if (Off < 64 && !Rand(4)) { in ChangeBinaryInteger()
409 if (Rand.RandBool()) in ChangeBinaryInteger()
413 T Add = static_cast<T>(Rand(21)); in ChangeBinaryInteger()
415 if (Rand.RandBool()) in ChangeBinaryInteger()
419 if (Add == 0 || Rand.RandBool()) // Maybe negate. in ChangeBinaryInteger()
430 switch (Rand(4)) { in Mutate_ChangeBinaryInteger()
431 case 3: return ChangeBinaryInteger<uint64_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
432 case 2: return ChangeBinaryInteger<uint32_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
433 case 1: return ChangeBinaryInteger<uint16_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
434 case 0: return ChangeBinaryInteger<uint8_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
448 switch(Rand(3)) { in Mutate_CrossOver()
549 auto M = Mutators[Rand(Mutators.size())]; in MutateImpl()