【发布时间】:2018-03-15 13:41:23
【问题描述】:
我需要在 C# 中生成一个介于 0 和 1 之间的随机数。它不需要比一个小数位更准确,但如果是的话也不是问题。
我可以选择Random.Next(0, 10) / 10.0 或Random.NextDouble()。
我找不到任何关于这两种方法时间复杂度的具体信息。我认为Random.Next() 会像在 Java 中一样高效,但是添加除法(其复杂性取决于 C# 使用的方法)会使事情复杂化。
是否有可能纯粹从理论上找出哪个更有效?我意识到我可以通过一系列测试来计时,但想了解为什么其中一个比另一个更复杂。
【问题讨论】:
-
理论并不像实际结果那么重要。因此,如果您好奇,请使用benchmarking library 来实际测量性能差异。
-
1.运行基准测试以检查 2。您可以在此处阅读两种实现的源代码:referencesource.microsoft.com/#mscorlib/system/…
-
我认为您在这里过于强调效率。
-
您只需要 10 个不同的值,可以轻松放入数组中。不一定更快,你必须测量。
-
测试:不,比 NextDouble() 慢约 18%。这不必优化。
标签: c# performance random time-complexity