xref: /aosp_15_r20/external/flatbuffers/tests/FlatBuffers.Test/Lcg.cs (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Worker /*
2*890232f2SAndroid Build Coastguard Worker  * Copyright 2016 Google Inc. All rights reserved.
3*890232f2SAndroid Build Coastguard Worker  *
4*890232f2SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*890232f2SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*890232f2SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*890232f2SAndroid Build Coastguard Worker  *
8*890232f2SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
9*890232f2SAndroid Build Coastguard Worker  *
10*890232f2SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*890232f2SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*890232f2SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*890232f2SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*890232f2SAndroid Build Coastguard Worker  * limitations under the License.
15*890232f2SAndroid Build Coastguard Worker  */
16*890232f2SAndroid Build Coastguard Worker 
17*890232f2SAndroid Build Coastguard Worker namespace FlatBuffers.Test
18*890232f2SAndroid Build Coastguard Worker {
19*890232f2SAndroid Build Coastguard Worker     /// <summary>
20*890232f2SAndroid Build Coastguard Worker     /// Lcg Pseudo RNG
21*890232f2SAndroid Build Coastguard Worker     /// </summary>
22*890232f2SAndroid Build Coastguard Worker     internal sealed class Lcg
23*890232f2SAndroid Build Coastguard Worker     {
24*890232f2SAndroid Build Coastguard Worker         private const uint InitialValue = 10000;
25*890232f2SAndroid Build Coastguard Worker         private uint _state;
26*890232f2SAndroid Build Coastguard Worker 
Lcg()27*890232f2SAndroid Build Coastguard Worker         public Lcg()
28*890232f2SAndroid Build Coastguard Worker         {
29*890232f2SAndroid Build Coastguard Worker             _state = InitialValue;
30*890232f2SAndroid Build Coastguard Worker         }
31*890232f2SAndroid Build Coastguard Worker 
Next()32*890232f2SAndroid Build Coastguard Worker         public uint Next()
33*890232f2SAndroid Build Coastguard Worker         {
34*890232f2SAndroid Build Coastguard Worker             return (_state = 69069 * _state + 362437);
35*890232f2SAndroid Build Coastguard Worker         }
36*890232f2SAndroid Build Coastguard Worker 
Reset()37*890232f2SAndroid Build Coastguard Worker         public void Reset()
38*890232f2SAndroid Build Coastguard Worker         {
39*890232f2SAndroid Build Coastguard Worker             _state = InitialValue;
40*890232f2SAndroid Build Coastguard Worker         }
41*890232f2SAndroid Build Coastguard Worker     }
42*890232f2SAndroid Build Coastguard Worker }