Random 为什么随机类不是';真的不是随机的吗?

Random 为什么随机类不是';真的不是随机的吗?,random,Random,我在留言板上读到过-Random类并不是真正的随机。它是使用数学公式以可预测的方式创建的 这是真的吗?如果是这样的话,Random并不是真正的随机???因为确定性计算机本身在生成“真”随机数方面非常糟糕 此外,可预测/可重复的随机序列通常非常有用,因为它有助于测试。因为确定性计算机本身在生成“真实”随机数方面非常糟糕 此外,可预测/可重复的随机序列通常非常有用,因为它有助于测试。要创建绝对随机的东西确实很难。查看维基百科上的文章和要创建完全随机的东西真的很难。请参阅和上的Wikipedia文章,

我在留言板上读到过-
Random
类并不是真正的随机。它是使用数学公式以可预测的方式创建的


这是真的吗?如果是这样的话,
Random
并不是真正的随机???

因为确定性计算机本身在生成“真”随机数方面非常糟糕


此外,可预测/可重复的随机序列通常非常有用,因为它有助于测试。

因为确定性计算机本身在生成“真实”随机数方面非常糟糕


此外,可预测/可重复的随机序列通常非常有用,因为它有助于测试。

要创建绝对随机的东西确实很难。查看维基百科上的文章和

要创建完全随机的东西真的很难。请参阅和上的Wikipedia文章,每个起始种子的顺序都是可预测的。对于不同的种子,返回不同的数字序列。如果使用的种子本身是随机的(比如DatetTime.Now.Ticks),那么这些数字返回的是一个足够的“随机”


或者,您可以使用加密随机数生成器,如RNGCryptoServiceProvider类。

对于每个起始种子,序列是可预测的。对于不同的种子,返回不同的数字序列。如果使用的种子本身是随机的(比如DatetTime.Now.Ticks),那么这些数字返回的是一个足够的“随机”


或者,您可以使用加密随机数生成器,如RNGCryptoServiceProvider类。

这是真的,但您可以始终使用一些时间相关的值来为随机数生成器种子,或者如果您真的准备推出这艘船,请访问www.random.org


在随机类的情况下,我认为它应该是随机的,足以满足大多数需求。。。我看不到一个方法来实际为它播种,所以我猜它必须自动为内置行为播种…

这是真的,但是你可以总是用一些时间相关的值来为随机数生成器播种,或者如果你真的准备把船推出,请访问www.random.org


在随机类的情况下,我认为它应该是随机的,足以满足大多数需求。。。我看不到一个方法来实际为它播种,所以我猜它必须自动为内置行为播种…

它不是随机的,它是一个类似随机的数字生成算法,它基于要生成的数字。如果您将该随机数设置为类似于系统时间的值,则这些数字更接近随机数,但如果您使用这些数字,比如说,一种加密算法,则攻击者知道您何时生成随机数和使用的算法,那么您的加密将更有可能被破坏


生成真正随机数的唯一方法是测量一些自然的东西,例如电压水平或让麦克风在某处拾取声音或类似的东西。

它不是随机的,它是一种类似随机数的生成算法,它基于要生成的数字。如果您将该随机数设置为类似于系统时间的值,则这些数字更接近随机数,但如果您使用这些数字,比如说,一种加密算法,则攻击者知道您何时生成随机数和使用的算法,那么您的加密将更有可能被破坏


生成真正随机数的唯一方法是测量一些自然的东西,例如电压水平或让麦克风在某处拾取声音或类似的东西。

正如其他人所说,随机数根据种子值创建伪随机数。了解.NET类Random有两个构造函数可能会有所帮助:

 Random(int Seed)
使用给定的种子值创建一个随机数生成器,如果您想要程序的可复制行为,这将非常有用。另一方面,

 Random()

创建一个随机数生成器,其日期时间取决于种子值,这意味着,几乎每次您再次启动程序时,它都会生成不同的(伪)随机数序列。

正如其他人所说,随机数根据某些种子值创建伪随机数。了解.NET类Random有两个构造函数可能会有所帮助:

 Random(int Seed)
使用给定的种子值创建一个随机数生成器,如果您想要程序的可复制行为,这将非常有用。另一方面,

 Random()

创建一个随机数生成器,其种子值取决于日期-时间,这意味着,几乎每次您再次启动程序时,它都会生成不同的(伪)随机数序列。

正确。随机类并不是完全随机的。重要的问题是,它在统计上是否像你所需要的那样接近随机性。Random类的输出在统计上与合理的确定性程序一样接近随机。该算法使用由线性同余公式修改的48位种子。如果使用无参数构造函数创建随机对象,则毫秒时间的48个低阶位将用作种子。如果使用seed参数(long)创建随机对象,则long的48个低阶位将用作种子

如果使用相同的种子实例化Random,并使其下一次调用的顺序完全相同,则该实例将产生完全相同的值顺序。这是为了考虑可预测的软件测试和数据管理。通常,Random不与用于操作的恒定种子一起使用,因为它通常用于获得不可预测的伪随机序列。如果在同一时钟毫秒内创建两个具有无参数构造函数的随机实例,则它们也将从这两个实例中获得相同的序列。需要注意的是,最终,随机实例将重复其模式。因此,随机