每日一博 | 随机数大家都会用,但是你知道生成随机数的算法吗?
点击上方蓝字,关注并星标,和我一起学技术。 今天我们来和大家聊聊随机数。 大家如果学过编程对于随机数应该都不陌生,应该或多或少都用到过。再不济我们每周的抽奖都是用随机数抽出来的,我们用随机数的时候,往往都会加一个前缀,说它是伪随机数,那么这个伪随机数的伪字该怎么解释,什么又是真随机数呢? 真伪随机数 目前学界划分真伪随机数的方式非常简单,一句话就能说明白,凡是用一定的算法使用程序生成的都是伪随机数,通过物理现象产生的随机数才是真随机数。也就是说计算学家们已经证明了仅仅依靠算法是无法生成真随机数的,也可以认为这是一个NP问题。 算法生成的都是伪随机数的证明太过复杂我们可以不去深究,但是什么又叫做物理现象产生的随机数呢?其实也很简单,举个很简单的例子就是抛硬币和掷骰子。当然物理现象不止这些,比如还有电子元件的噪音、元素的衰变等等。 真假随机数之间的最大差别在哪里?其实就在是否可以预测上。计算机算法得出的各种随机数之所以是伪随机数是因为它们的结果都是可以预测的,只要我们知道算法和起始状态以及各种参数,就可以预测下一次随机出来的结果。而真随机数则无法预测,就是纯粹随机的。 但问题来了,抛硬币和...
