让我先说明我不是C#开发人员。我是贸易和选择的C开发者。但我必须使用Visual C#来参加我正在上课的课程。
我一直在阅读加密安全伪随机数生成器和System.Random之间的差异。每个人都很清楚,RNGCryptoServiceProvider随机性更强,但也更慢。
对于我们在群组项目中的算法,我们将使用给定(固定)列表中的3个随机节点,在25秒内尽可能多次,以在它们之间的路径上对边缘进行评分。
为了使我们的算法“完整”,我们需要确保每个节点的选择接近与其他每个节点相同的次数。为了使我们的算法“最佳”(或尽可能接近,因为我们可以接近近似),我们需要在25秒(或任何其他任意)截止日期内尽可能多地进行评分。< / p>
鉴于我们将使用Random的单个实例,但我们将运行一个循环,它将快速连续调用Random.Next()3次,并且将重复多次,将随机产生合理均匀的分布?或者我们是否需要承担RNGCryptoServiceProvider的额外费用以确保我们没有任何完全跳过的节点?
答案 0 :(得分:1)
随机将产生均匀分布。 Random的问题在于它有些可预测 - 从几个随机数中可以推断出随机数流的其余部分。因为这对你来说不是问题,而你只担心均匀分布,所以Random应该足够了。