Skip to content

Commit 3d2d6a4

Browse files
committed
Cosmetics
1 parent 7e0c11f commit 3d2d6a4

2 files changed

Lines changed: 32 additions & 27 deletions

File tree

src/Numerics/Combinatorics.cs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,7 @@ public static void SelectPermutationInplace<T>(T[] data, System.Random randomSou
160160
for (int i = data.Length - 1; i > 0; i--)
161161
{
162162
int swapIndex = random.Next(i + 1);
163-
T swap = data[i];
164-
data[i] = data[swapIndex];
165-
data[swapIndex] = swap;
163+
(data[i], data[swapIndex]) = (data[swapIndex], data[i]);
166164
}
167165
}
168166

@@ -372,30 +370,36 @@ public static BigInteger[] GenerateVariation(BigInteger n, int k, System.Random
372370
if (k > n) throw new ArgumentOutOfRangeException(nameof(k), $"k must be smaller than or equal to n.");
373371

374372
var random = randomSource ?? SystemRandomSource.Default;
373+
375374
BigInteger[] selection = new BigInteger[k];
376375
if (n == 0 || k == 0)
376+
{
377377
return selection;
378-
selection[0] = random.NextBigIntegerSequence(0, n).First();
379-
bool[] CompareCache;
380-
bool KeepLooping;
381-
BigInteger RandomNumber;
378+
}
379+
380+
selection[0] = random.NextBigIntegerSequence(BigInteger.Zero, n).First();
381+
bool[] compareCache;
382+
bool keepLooping;
383+
BigInteger randomNumber;
384+
382385
for (int a = 1; a < k; a++)
383386
{
384-
RandomNumber = random.NextBigIntegerSequence(0, n - a).First();
385-
CompareCache = Enumerable.Repeat(true, a).ToArray();
387+
randomNumber = random.NextBigIntegerSequence(BigInteger.Zero, n - a).First();
388+
compareCache = Generate.Repeat(a, true);
386389
do
387390
{
388-
KeepLooping = false;
391+
keepLooping = false;
389392
for (int b = 0; b < a; ++b)
390-
if (CompareCache[b] && RandomNumber >= selection[b])
393+
if (compareCache[b] && randomNumber >= selection[b])
391394
{
392-
CompareCache[b] = false;
393-
KeepLooping = true;
394-
RandomNumber++;
395+
compareCache[b] = false;
396+
keepLooping = true;
397+
randomNumber++;
395398
}
396-
} while (KeepLooping);
397-
selection[a] = RandomNumber;
399+
} while (keepLooping);
400+
selection[a] = randomNumber;
398401
}
402+
399403
return selection;
400404
}
401405

src/Numerics/Random/RandomExtensions.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -202,22 +202,23 @@ static IEnumerable<int> NextInt32SequenceEnumerable(System.Random rnd, int minIn
202202
/// </remarks>
203203
public static IEnumerable<BigInteger> NextBigIntegerSequence(this System.Random rnd, BigInteger minInclusive, BigInteger maxExclusive)
204204
{
205-
BigInteger AbsoluteRange = maxExclusive - minInclusive;
206-
int NumBytes = (int)Math.Ceiling(BigInteger.Log(AbsoluteRange, byte.MaxValue) * 2) + 1;
207-
byte[] ByteSequence = Enumerable.Repeat(byte.MaxValue, NumBytes + 1).ToArray();
208-
ByteSequence[NumBytes] = 0;
209-
BigInteger RandomNumber = new BigInteger(ByteSequence);
210-
BigInteger ValidRange = RandomNumber - RandomNumber % AbsoluteRange;
205+
BigInteger absoluteRange = maxExclusive - minInclusive;
206+
int numBytes = (int)Math.Ceiling(BigInteger.Log(absoluteRange, byte.MaxValue) * 2) + 1;
207+
byte[] byteSequence = Generate.Repeat(numBytes + 1, byte.MaxValue);
208+
byteSequence[numBytes] = 0;
209+
BigInteger randomNumber = new BigInteger(byteSequence);
210+
BigInteger validRange = randomNumber - randomNumber % absoluteRange;
211+
211212
while(true)
212213
{
213214
do
214215
{
215-
rnd.NextBytes(ByteSequence);
216-
ByteSequence[NumBytes] = 0;
217-
RandomNumber = new BigInteger(ByteSequence);
216+
rnd.NextBytes(byteSequence);
217+
byteSequence[numBytes] = 0;
218+
randomNumber = new BigInteger(byteSequence);
218219
}
219-
while (RandomNumber >= ValidRange);
220-
yield return RandomNumber % AbsoluteRange + minInclusive;
220+
while (randomNumber >= validRange);
221+
yield return randomNumber % absoluteRange + minInclusive;
221222
}
222223
}
223224

0 commit comments

Comments
 (0)