首页 > 编程知识 正文

计算机产生随机数的方法,计算机如何生成随机数

时间:2023-05-04 16:32:13 阅读:119846 作者:4702

在生活中,我们需要使用随机数的地方很多,例子也经常列举。 例如,买彩票的号码是随机数。 但是,如果需要在计算机上产生随机数,大多数情况下不是真随机数。 这叫做伪随机数。 这些伪随机数在一定数值范围内使用一定算法选择一个数字并表示为随机生成的结果。 我们只能尽量使这个算法公平,尽量使选出范围内每个数字的概率相同。 这样,生成的结果就会接近随机数。

如果编程有基础,对rand (函数或random )函数就不太了解了。 这两个函数都用于生成伪随机数。 请设置随机种子(数字格式),以便函数生成伪随机数。 我们努力使生成的伪随机数尽可能接近真随机数的概率,但两者有本质的区别。 最重要的区别是,真随机数既没有预测也没有规律,而伪随机数一定有规律(低级规律容易找,高级规律难找而已),可以预测。

可以预测对计算机来说是可怕的。 我们经常使用随机数的场面是发奖金等关系到利益和胜负的事情,所以如果隐藏着生成伪随机数的部分的代码还可以,但是游戏的参加者看不到伪随机数有什么规律,也不能人为操作。 但是,如果需要公开一些代码,伪随机数的规律性就会变得麻烦。 就像最近热门的区块链技术一样,如果有人制作区块链游戏,他必须将代码以白皮书的形式发布,生成伪随机数的部分需要玩家慎重考虑。

以前有区块链开放的游戏。 玩家支付10元参加游戏,10个玩家参加游戏时,随机给出数字,生成区块时间最接近这个数字的玩家获胜,得到10个玩家支付的共计100元的报酬。 如果有人通过研究这个伪随机数的产生规律,提前预知下一个奖金数字是什么,他如果能操纵自己在近时间付钱入场生成区块,他很可能会取得最后胜利,远远超过投入的财富。

所以,伪随机数在一些情况下是行不通的,需要想办法把需要公平的问题转化为另一种模式。 但有些情况下,为我们做一些工作需要伪随机数。 可以生成伪随机数的算法有很多,这些算法也各有优劣。 第一个伪随机数算法是1946年计算机历史上重要而著名的人——帅时提出的平方取中法,以m位的倪为种子进行平方运算,其中选择m位的数作为倪1。 该算法比较容易执行,但也有很大的缺点。 虽然可以执行的周期很短,但是周期越长,随机性能被认为越高。 另外,如果选择100000等特殊数字,则平方结果中间的m位始终为000000。

也有几种方法可以验证伪随机数函数和生成器随机性能的优劣。 我们生成的伪随机数具有均匀性,希望有机会平等地出现与真随机数接近的各种可能的数值。 我们希望生成的伪随机数具有独立性,在多个伪随机数之间产生内在联系,不能让他人分析伪随机数生成的规律。 但毕竟,计算机产生随机数可能就像是永恒的动机。 以我们现在的水平很难完美地实现,但不能说它不能实现。

通报/反馈

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。