2012-05-15 69 views
0

可能重复:
class System.Random .. why not static?为什么`Random`默认不包含静态的`Next`方法?

"Generated random numbers are always equal"继,我不知道;

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

+0

已经解答 - 请参阅http://stackoverflow.com/questions/4933823/class-system-random-why-not-static – dash

回答

6

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

虽然你不应该使用静态方法。你应该在确保保持状态的东西上使用实例方法。如果每次呼叫Next时创建一个新实例Random,如果连续多次呼叫该号码,则会以重复的号码结束。

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

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

查看我的​​了解更多详细信息和代码示例。

+0

谢谢,还有不错的文章......我可能不得不购买你的书,哈哈。 – Richard

相关问题