mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2026-06-13 22:48:42 +00:00
a
This commit is contained in:
+12
-11
@@ -12,33 +12,34 @@ namespace Esiur.Tests.RPC.Client
|
||||
|
||||
// Generate random int array of given length and distribution
|
||||
public static int[] GenerateInt32(int length, string pattern = "uniform",
|
||||
int range = int.MaxValue)
|
||||
int range = int.MaxValue, Random? random = null)
|
||||
{
|
||||
|
||||
var data = new int[length];
|
||||
var source = random ?? rng;
|
||||
|
||||
switch (pattern.ToLower())
|
||||
{
|
||||
case "uniform":
|
||||
// Random values in [-range, range]
|
||||
for (int i = 0; i < length; i++)
|
||||
data[i] = rng.Next(-range, range);
|
||||
data[i] = source.Next(-range, range);
|
||||
break;
|
||||
|
||||
case "positive":
|
||||
for (int i = 0; i < length; i++)
|
||||
data[i] = rng.Next(0, range);
|
||||
data[i] = source.Next(0, range);
|
||||
break;
|
||||
|
||||
case "negative":
|
||||
for (int i = 0; i < length; i++)
|
||||
data[i] = -rng.Next(0, range);
|
||||
data[i] = -source.Next(0, range);
|
||||
break;
|
||||
|
||||
case "alternating":
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
int val = rng.Next(0, range);
|
||||
int val = source.Next(0, range);
|
||||
data[i] = (i % 2 == 0) ? val : -val;
|
||||
}
|
||||
break;
|
||||
@@ -46,13 +47,13 @@ namespace Esiur.Tests.RPC.Client
|
||||
case "small":
|
||||
// Focused on small magnitudes to test ZigZag fast path
|
||||
for (int i = 0; i < length; i++)
|
||||
data[i] = rng.Next(-64, 65);
|
||||
data[i] = source.Next(-64, 65);
|
||||
break;
|
||||
|
||||
|
||||
case "ascending":
|
||||
{
|
||||
int start = rng.Next(-range, range);
|
||||
int start = source.Next(-range, range);
|
||||
for (int i = 0; i < length; i++)
|
||||
data[i] = start + i;
|
||||
}
|
||||
@@ -103,10 +104,10 @@ namespace Esiur.Tests.RPC.Client
|
||||
var result = new Dictionary<string, int[]>();
|
||||
var r = new Random(seed);
|
||||
|
||||
result.Add("uniform", GenerateInt32(1000, "uniform"));
|
||||
result.Add("small", GenerateInt32(1000, "small"));
|
||||
result.Add("alternating", GenerateInt32(1000, "alternating"));
|
||||
result.Add("ascending", GenerateInt32(1000, "ascending"));
|
||||
result.Add("uniform", GenerateInt32(1000, "uniform", random: r));
|
||||
result.Add("small", GenerateInt32(1000, "small", random: r));
|
||||
result.Add("alternating", GenerateInt32(1000, "alternating", random: r));
|
||||
result.Add("ascending", GenerateInt32(1000, "ascending", random: r));
|
||||
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user