其实计算机是有办法得到真随机数的

  • 我武者羅
    其实计算机的伪随机数生成算法的发明比计算机的发明晚,早年计算机甚至只能生成随机数。因为即使有人工写出来的随机数表,也装不进计算机存储空间里。

    现在的电脑手机里也有真随机数生成器,工作原理就是采集CPU运行过程中的一些电气特性,然后用一些算法取出一定位数。这些随机数是由无法预测的现象产生的,因为CPU运行中的这些电气特性受许多无法控制的因素影响,所以随机性都很好,是真随机。不过因为这些随机数生成的过程比伪随机数生成要慢一点,所以一般只用在安全性要求高的地方,或者只用于生成一次用于伪随机数算法的种子。

    如果是一台联网的计算机,方法就更多了,有网站提供在太平洋观测到的大气噪音的,有天文台持续公布宇宙辐射观测值,甚至可以用某个股市指数取末位数字,都是真随机数。
  • 8
    888999000
    你不懂什么是随机数
  • 炽十二翼
    你不懂什么是计算机
  • j
    jun4rui
    那些都不是真随机的
  • j
    jiejieup
    这些都不是真随机,怎么确保每个数获得的概率是一样的?
  • t
    tooomy
    你不懂什么是真随鸡
  • O
    OpEth
    按照曹同学在另一个帖子的说法,无限集合不存在均匀分布的概率。。。。。
  • 我武者羅
    如果楼上的意思是经典力学角度下的随机不存在的话,或者是想讨论自然中存不存在真随机的话,那确实没办法了

    但现在确实可以说这些随机数是真正的随机数,因为现在还没办法预测他们

    主贴说的真随机,意思是能取值到一定范围内的无法预测的随机数,它们现在都还工作得很好啊

    [本帖最后由 我武者羅 于 2018-9-23 17:04 编辑]
  • a
    aironline
    那个帖子里所谓的真随机数,是没有限制数的大小的。根本没有实际意义。如果是有限制的真随机数。比如2位数,股市小数点后面的确可以啊。
  • s
    seek
    确实不是真随机。
    但是,我觉得概率均等这个条件,反而也阻碍了不可预测性。所以,随机也不代表自由。
  • j
    jjx01
    那个问题的关键是如何把随机数均匀扩散到全体实数范围
  • z
    zerlier
    在那贴里我也问了,究竟在一个无穷集合里“取”其中一个对象这种操作在数学中的表达为何?
  • Y
    Yit
    1以下的取正切就行了
  • d
    dinghanzi
    做一个摇骰子的机器和计算机相连,每次需要随机数计算机就摇一摇骰子,再用摄像头图像识别数字。算不算随机数?

    本帖最后由 dinghanzi 于 2018-9-23 17:46 通过手机版编辑
  • y
    yfl2
    本来也不需要真随机,实际上需要的只是达到随机的效果
    所以实际上,只要能做到每次抽样都是独立事件,而且最终频率上无限趋近于均匀即可
  • z
    zakest
    不知道的还以为你是进制片小号。
  • h
    henvelleng
    每次讨论伪随机这个问题,最后都会进入貌似哲学玄学实则民科的范畴,这一切可能就是不知道哪个半瓶水的码农说了计算机里只有伪随机这样的话,虽然从极度专业的密码学角度严格来说这或许不算错,但肯定不是民科们想象那个意思

    反而在计算机里,随机数相对还好理解一些,只要随机种子是随机的,那么随机算法就能给出你想要的范围内的随机数。

    随机种子哪里来,lz说了一种,就是取自无规律的中断触发时间和频率,在操作系统中构成一个随机熵,然而绝大多数(甚至可以认定为全部)情况下根本用不上这样的随机种子,因为如果中断数不够,取随机数的操作会阻塞,反而影响程序正常运行。

    反正密码学家都觉得没问题的所谓伪随机数,你们要从哲学上去批驳,必然是立于不败之地的
  • h
    huzhiyangqaz
    是不是随机数是有严格标准的

    一串数列无论是怎么得来的,只要满足若干标准,就是真随机数

    以前学计算物理用蒙特卡罗法求积分时用到过这些东西,我们都是用提供的真随机序列来计算,用算法生成的随机数计算就会得到错误结果

    有一个导师就是专门做硬件高速随机数生成设备的,这玩意在计算物理里似乎挺重要
  • 7
    79859899
    据我所知 计算机普遍采用的随机数生成方式是用 当前时间为参数 放到随机生成函数中产生的
    所以理论上它并不是随机数
  • h
    henvelleng
    实际情况是:我们只看结果,不问过程

    只要能通过所有随机性统计检验,不可预测,不可重复产生的,都算可靠的随机数,并不管你是怎么生成的。爱因斯坦到死都不认可这个宇宙存在随机(笑)

    随机数生成方法非常多,这些方法并不都是可靠的,但存在大量不需要依赖硬件的可靠的“伪随机数”生成法,至少密码学家都认为可行,那就ok了
  • 不是他
    主贴说的,工作原理就是采集CPU运行过程中的一些电气特性。采集硬件运行过程的随机现象去生成随机数。

    并不只是使用时间。这种方式比较耗时,所以一般场景没有使用。
  • n
    neo1tgfc
    现在也差不多,随机数会有一个熵池,你的开机时间,敲入键盘,鼠标移动都会记录在这个池子里,所以产生的随机数就是随机的,至于大佬们讨论的随机数,那是哲学意义上的,对我们来说毫无意义
  • O
    Oldman
    随机的反面应该是规律,也就是说凡是能在一定的条件下重现的现象都不是真正的随机。而现在很多产生“随机”数的方式在理论上还是受客观物理规律支配的,都不是真正的随机。只是由于重现这一现象的具体客观物理条件不明确,暂时无法重现,而视其为随机罢了。
  • 色并矜持着
    到 π里面去取不行吗
  • 很苦的熊
    二十年前和一个程序猿合作,他的方案是读一下CPU温度后面的小数点,最为一个随机参数。
  • 潜水运动员
    计算机的数肯定是伪随机数啊,都有算法算的,真随机是那些物理现象

    我记得上次全球网友参加的证明量子纠缠的贝尔实验:网友用一个在线视频游戏把自己的0和1的随机序列贡献给五大洲的实验室,做随机数
  • 我武者羅
    对的,主贴说的就是计算机里面有传感器可以获取基于无序物理现象的数字

    第二个叫做大贝尔实验,一直有人在做的,全球网友参与有点噱头性质了
  • r
    ro4074
    真随机数生成器早就有了,淘宝100多就可以买到,但它的原理和计算机没有任何关系。计算机也有自己的随机数生成算法,以时间作为随机数种子得到的数字可以认为是真随机的,然而受限于CPU时间精度限制,这随机出来数字的范围比物理随机数生成器小太多。
  • k
    kives
    我觉得liunx的实现已经可以算真随机了吧

    Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了
  • h
    hms
    学习氛围这么浓啊
  • C
    Crusher
    熵池的办法已经足够用了
    至于你们说的真随机数,我觉得是哲学范畴
  • e
    endrollex
    真随机数一般人没什么鸟用,
  • h
    hourousha
    intel的haswell后有硬件随机数生成指令。这个应该比较接近真随机数了。