0

可能重复:
类 System.Random .. 为什么不是静态的?

“生成的随机数总是相等”之后,我想知道;

为什么该类不公开具有可选最小值和最大值Random的静态方法?Next这听起来可能是一个愚蠢的问题,但根据经验,10 次中有 9 次我想生成一个随机数,而不必明确指定种子?我是否遗漏了一些明显的东西,这是有原因的吗?或者实际上我正在解释一种我尚未发现的方法?

4

1 回答 1

6

这听起来可能是一个愚蠢的问题,但根据经验,10 次中有 9 次我想生成一个随机数,而不必明确指定种子?

不过,您不应该为此使用静态方法。您应该在确实保持状态的事物上使用实例方法。如果您Random每次调用时都创建一个新实例,Next如果您快速连续多次调用它,最终会得到重复的数字。

您应该将“随机数的来源”视为与任何其他 IMO 一样的依赖项 - 可注入以便可测试。当然,如果你没有使用依赖注入,那么这个论点可能不适用……但是你还有其他问题。

您可能需要每个线程一个实例Random,因为Random它不是线程安全的。

有关更多详细信息和代码示例,请参阅我关于随机数的文章。

于 2012-05-15T09:59:39.690 回答