您可以在单独的数组中生成允许值(相对于最小值,最大值和忽略的值),并将其用于目标数组生成。我们来考虑下面的例子。
帮助功能:
byte[] GenerateAllowableValues(byte min, byte max, byte[] ignore)
{
var list = new List<byte>();
for (byte i = min; i <= max; i++)
if (!ignore.Contains(i))
list.Add(i);
return list.ToArray();
}
byte[] GenerateRandomArray(Random random, byte[] allowableValues, int length)
{
var array = new byte[length];
for (int i = 0; i < length; i++)
array[i] = allowableValues[random.Next(allowableValues.Length)];
return array;
}
用法:
void Main()
{
var random = new Random(42);
var allowableValues = GenerateAllowableValues(10, 20, new byte[] { 12, 15 });
var randomArray = GenerateRandomArray(random, allowableValues, 5);
foreach (byte b in randomArray)
Console.WriteLine(b); // 18 11 11 16 11
}
你不想要什么号码?你能展示一个包含这样的数字的样例输出,以及你期望它的样子吗? – 2014-11-23 15:48:02
“,但重复调用此函数不会给出好的结果。”这是什么意思?你每次打电话时都收到相同的号码吗? – 2014-11-23 15:48:15