注意:这是2部分问题的第2部分。
我想要更多地关于排序算法以及比编码更好的方法!所以我想我需要一些数据来处理。
我创建一些“标准”数据的方法如下:创建一定数量的项目,不确定它有多大,但我想玩得开心,让我的计算机呻吟一下:D
一旦我有了这个列表,我就会把它推入一个文本文件,然后读取它来运行我的算法。我应该总共有4个文本文件填充相同的数据,但只是排序不同以运行我的算法(见下文)。
如果我错了,请纠正我,但我相信我需要4种不同类型的场景来分析我的算法。
此问题用于生成包含一些独特数据项的列表。
哪种方法最适合生成包含一些独特项目的数据集。
答案 0 :(得分:1)
在这里回答我自己的问题。不知道这是否是最好的但是有效。
public static int[] FewUnique(int uniqueCount, int returnSize)
{
Random r = _random;
int[] values = new int[uniqueCount];
for (int i = 0; i < uniqueCount; i++)
{
values[i] = i;
}
int[] array = new int[returnSize];
for (int i = 0; i < returnSize; i++)
{
array[i] = values[r.Next(0, values.Count())];
}
return array;
}
答案 1 :(得分:0)
值得一看NBuilder。它是一个框架,旨在生成用于测试的对象,并且听起来就像您需要的那样。
您可以使用以下代码处理“少数独特”项目:
var products = Builder<YourClass>.CreateListOfSize(1000)
.WhereAll().AreConstructedWith("some fixed value")
.WhereRandom(20).AreConstructedWith("some other fixed value")
.Build();
您还可以使用许多其他变体来获取您想要的数据。请查看网站上的一些示例以获取更多想法。
答案 2 :(得分:0)
http://pages.cs.wisc.edu/~bart/fuzz/
关于模糊测试的重点是半随机数据。应该直接使这种方法适应您的问题
答案 3 :(得分:0)
我猜你的解决方案还可以。我只会轻描淡写地修改它:
public static int[] FewUnique(int uniqueCount, int low, int high, int returnSize)
{
Random r = _random;
int[] values = new int[uniqueCount];
for (int i = 0; i < uniqueCount; i++)
{
values[i] = r.Next(low, high);
}
int[] array = new int[returnSize];
for (int i = 0; i < returnSize; i++)
{
array[i] = values[r.Next(0, values.Count())];
}
return array;
}
对于某些算法,这可能会有所不同。