【问题标题】:What could be the use of (Random.NextDouble() < 1)(Random.NextDouble() < 1) 可能有什么用途
【发布时间】:2012-10-23 12:07:57
【问题描述】:

我在几个应用程序中看到我支持以下句子:

Random rnd = new Random();
if (rnd.NextDouble() < 1)
{
    ' Do stuff
}

这样做的目的是什么? rnd 将始终返回一个低于 1 的值。我唯一能想到的是,如果您模拟 Random,那么您将能够停用代码的某些部分。

你怎么看?你发现过这样的事情吗?

编辑:问题是这些句子位于不同但相关的代码部分,并且始终涵盖整个功能。这就是为什么我倾向于认为这是故意编码的。而且代码似乎具有一定程度的质量,这是一个错误,如果提供所有其他代码,我会感到惊讶。

【问题讨论】:

  • 如果我可以问,您只是出于好奇,还是想实施它?如果有,你有什么想法?
  • 或者有人从未阅读过NextDouble() 的文档?
  • 这似乎是多余的代码,难道他们最初使用除 1 之外的其他值测试应用程序,并且出于懒惰,代码仍保留在最终版本中?不幸的是,我过去曾见过这种情况。
  • 无论如何,在没有评论的情况下使用它看起来非常可疑。问写它的人。 (模拟 Random 以返回大于 1 的东西似乎也可能会破坏。)
  • 如果在 Visual Studio 中只需突出显示方法名称并按 Shift+F12 - 查找所有引用。

标签: c# .net random mocking


【解决方案1】:

我不确定,但不需要此检查。 rnd.NextDouble 将始终在范围内返回 0.0 到 1.0。

Random.NextDouble Method - MSDN

大于等于0.0的双精度浮点数, 并且小于 1.0

【讨论】:

  • 我知道这一点,我会说编写此代码的人也知道这一点。如果模拟使用但看起来很奇怪,我能想到的唯一目的。
【解决方案2】:

假设有问题的Random 确实是System.Random,我看不出有任何功能原因。

我只能推测,也许作者想要一个代码块,他们可以轻松(在调试/开发时)有条件地运行(通过将 1 更改为 0)或仅在某些时候(通过更改101 之间的某个值)。但实际上,这不是一个众所周知的成语,所以你必须问写它的人,因此我投票结束,因为过于本地化。

【讨论】:

  • 老实说,我认为 SO 过于关注关闭事物。这是一个真正的问题,可以有一个真正的答案,所以我认为它不应该被关闭。即使检查是错误的,如果将来有人发现同样的错误,他也会知道这根本没有目的,所以保持这个问题对我来说是有意义的。
猜你喜欢
  • 2022-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多