c# - 我如何让连续的两个随机数给出不同的值?

标签 c#

例如,如果我有一个类:

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/

相关文章:

c# - 当我在未初始化的 char 对象属性上调用 ToString() 时返回什么?

c# - 傻瓜式表单设计器

c# - 将嵌套列表绑定(bind)到 WPF Canvas 面板

c# - C# 中不兼容的匿名函数签名?

c# - MVC 不验证空字符串

c# - 如何反序列化 JSON 字符串以便我可以在 C# 中循环它?

javascript - AngularJS 的堆栈跟踪?

c# - 从 mvc Controller 返回二维数组作为 json

c# - C#中的多级继承构造函数

c# - 从类中挑选随机对象