函数 returns 相同的值而不是唯一值
Function returns the same value instead of unique values
我在 sof 上找到了这个例子。当我使用它时,代码在单次调用时按设计工作。如果我多次调用 GiveMeaNumber,它 return 是完全相同的号码,尽管有多次调用。但是,如果我调试代码并逐步执行每个调用,我可以看到为每个函数调用分配了一个唯一编号的位置。我的问题是,当我尝试将此信息写入控制台而不是获取所有唯一值时,我得到了相同的值 x 次。我可以获得唯一值以写入控制台的唯一方法是调试并逐步完成对函数的每次调用。有人可以解释为什么会发生这种情况并提出可能的解决方案吗?我希望函数在每次调用时具有 return 个唯一值。我猜可能存在某种内存或参考问题?
int main()
{
int num1 = GiveMeANumber();
int num2 = GiveMeANumber();
int num3 = GiveMeANumber();
Console.WriteLine(num1 + ", " +
}
private int GiveMeANumber()
{
var exclude = new HashSet<int>() { 5, 7, 17, 23 };
var range = Enumerable.Range(1, 100).Where(i => !exclude.Contains(i));
var rand = new System.Random();
int index = rand.Next(0, 100 - exclude.Count);
return range.ElementAt(index);
}
这是因为您的随机对象以相同的种子开始。将其声明和赋值移动到 class 级别。
我在 sof 上找到了这个例子。当我使用它时,代码在单次调用时按设计工作。如果我多次调用 GiveMeaNumber,它 return 是完全相同的号码,尽管有多次调用。但是,如果我调试代码并逐步执行每个调用,我可以看到为每个函数调用分配了一个唯一编号的位置。我的问题是,当我尝试将此信息写入控制台而不是获取所有唯一值时,我得到了相同的值 x 次。我可以获得唯一值以写入控制台的唯一方法是调试并逐步完成对函数的每次调用。有人可以解释为什么会发生这种情况并提出可能的解决方案吗?我希望函数在每次调用时具有 return 个唯一值。我猜可能存在某种内存或参考问题?
int main()
{
int num1 = GiveMeANumber();
int num2 = GiveMeANumber();
int num3 = GiveMeANumber();
Console.WriteLine(num1 + ", " +
}
private int GiveMeANumber()
{
var exclude = new HashSet<int>() { 5, 7, 17, 23 };
var range = Enumerable.Range(1, 100).Where(i => !exclude.Contains(i));
var rand = new System.Random();
int index = rand.Next(0, 100 - exclude.Count);
return range.ElementAt(index);
}
这是因为您的随机对象以相同的种子开始。将其声明和赋值移动到 class 级别。