真正的随机数字

时间:2016-04-24 04:10:34

标签: random programming-languages

我在这里有两个问题:

  1. 请解释一下真正随机数的含义。我阅读了很多文章,但我无法理解其含义。

  2. 请用任何语言解释Rand()函数背后的代码,最好是c ++

2 个答案:

答案 0 :(得分:2)

  1. 真正随机的数字是由物理随机事件(本质上不可预测的事件)决定的。例如(原子的放射性衰变,大气噪声等)。之所以如此,是因为计算机本身没有真正随机的能力,但是,本质是。因此,如果计算机在性质上测量一些随机值,那么该数字是“真正随机的”,但伪是计算机生成种子的地方(C ++使用时间生成种子)并且随机数似乎是随机,但可以预测。
  2. “计算机使用函数来计算随机数。这意味着:拥有相同的种子,我们每次都得到相同的随机数行。因此伪随机数。” - 拉尔夫·里肯巴赫

    1. C ++使用自1970年1月1日午夜以来的时间,秒数。因此,当您告诉计算机生成一个随机数时,它需要自1970年1月1日以来的秒数(一个非常大的数字,种子),发送它通过一个算法,然后相应地切断它以满足你指定的范围。
    2.   

      这会导致计算机读取其时钟以自动获取种子的值。   函数时间返回自1970年1月1日午夜以来经过的秒数。此值将转换为无符号整数,并用作随机数生成器的种子。

      这当然是一种简化,更多可以在线阅读。以下是参考文献。

      参考文献:

      Truly random

      c++ docs

答案 1 :(得分:0)

简短摘要:

真正的随机数是指在某些情况下无法计算的 >由某个事件生成的数字,而Rand()函数计算的随机数是计算出来的。

有多种方法可以计算这样的数字,有些方法比其他方法更复杂。

有关其工作原理的更多详细信息,请参阅this question(在这种情况下为目标)C。