【问题标题】:Using C# System.Random for a probabilistic algorithm将 C# System.Random 用于概率算法
【发布时间】:2011-12-29 06:39:50
【问题描述】:

让我先声明我不是 C# 开发人员。我是一名职业和选择的 C 开发人员。但是我必须使用 Visual C# 来上课。

我一直在阅读加密安全伪随机数生成器和 System.Random 之间的区别。每个人似乎都很清楚 RNGCryptoServiceProvider 的随机性更强,但也更慢。

对于我们在一个小组项目中的算法,我们将使用给定(固定)列表中的 3 个随机节点,在 25 秒内尽可能多地对它们之间的路径上的边进行评分。

为了让我们的算法“完整”,我们需要确保每个节点被选中的次数与每个其他节点接近相同的次数。为了让我们的算法“最优”(或尽可能接近,因为我们可以使用近似值),我们需要在 25 秒(或任何其他任意)期限内尽可能多地进行评分。

鉴于我们将使用 Random 的单个实例,但我们将运行一个循环,该循环将快速连续调用 Random.Next() 3 次,并且将尽可能多地重复,将随机产生合理均匀的分布?或者我们是否需要产生额外的 RNGCryptoServiceProvider 成本以确保我们没有任何节点被完全跳过?

【问题讨论】:

标签: c# random probability


【解决方案1】:

随机将产生均匀分布。 Random 的问题在于它有点可预测——从几个随机数中,您可以推断出随机数流的其余部分。由于这对您来说不是问题,而且您只担心均匀分布,因此 Random 应该就足够了。

【讨论】:

  • 这就是我所需要的。谢谢。
猜你喜欢
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多