例如,如果我有一个类:
public class Class
{
public Random r;
public Class()
{r= new Random()}
}
然后创建它的两个实例:
Class a = new Class();
Class b = new Class();
并依次调用 r,两者的 r 将给出相同的值。我读到这是因为 Random 的默认构造函数使用时间来提供“随机性”,所以我想知道如何防止这种情况发生。提前致谢!
最佳答案
实现这一目标的一种方法是使 r
static
。
static
意味着只有一个 Random r
将存在,并且它将在类的所有实例之间共享。
你的代码看起来像这样:
public class Class() { static Random r = new Random(); }
Class a = new Class();
Class b = new Class();
如果你正在使用线程,你可以让它成为[ThreadStatic]
(这样每个线程都使用它自己的 Random 类实例)
有关如何使用 [ThreadStatic]
的信息 here - 我自己没有使用过它,但它看起来很酷很漂亮,并且消除了任何潜在的与线程相关的问题。
关于c# - 我如何让连续的两个随机数给出不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367423/