首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么随机不随机?

随机不随机是一个常见的计算机科学问题,涉及到随机数生成算法的设计和实现。

在计算机中,随机数是通过算法生成的,而不是真正的随机。这是因为计算机是基于确定性的逻辑运算,无法产生真正的随机性。因此,计算机生成的随机数实际上是伪随机数。

伪随机数是通过一个称为随机数生成器的算法生成的。这个算法使用一个称为种子的初始值,然后根据一系列的计算步骤生成一个序列的数字。这个序列看起来是随机的,但实际上是可以重现的。

为什么要使用伪随机数而不是真正的随机数呢?这是因为在计算机科学和密码学中,需要可重现的随机数序列。例如,在软件开发中,需要在每次运行程序时生成相同的随机数序列,以便调试和测试。在密码学中,需要生成相同的随机数序列来验证和验证数据的完整性。

然而,伪随机数也有一些问题。如果种子值是可预测的,那么生成的随机数序列也是可预测的。这可能导致安全漏洞和数据泄露。因此,在实际应用中,需要使用具有高度随机性的种子值,并且定期更换种子值,以增加随机性和安全性。

总结起来,随机数在计算机中是通过伪随机数生成算法生成的,而不是真正的随机。这是因为计算机是基于确定性的逻辑运算,无法产生真正的随机性。伪随机数生成算法使用种子值来生成可重现的随机数序列。在实际应用中,需要使用具有高度随机性的种子值,并定期更换种子值,以增加随机性和安全性。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

猜大小游戏的具体细节

具体讲解一下time 和rand ,srand三个函数具体细节  因为要用到随机数  所以要用到rand  但是他种子是固定的 为1  而随机数是以种子为基础进行算法的  所以随机数序列是固定的  这是它是伪随机 所以我们就要用到srand去改变rand种子  而提供的种子就要是随机的才能使rand随机  这时我们就用到time函数  此时time函数的返回值是此时到1985的时间差(忘了哪个时间)以这个为种子 所以就很随机   但需要注意的是因为是以时间为单位   所以如果我们将srand放在循环中 如果srand运行间隔太短 就导致种子几乎没区别 从而以此为基础算出来的rand就相差不大 从而随机数就导致没有随机性 两者间随机数相差不大(而如果你硬要将其放在循环中多次执行并且还想解决该问题就需在玩完一次游戏后等待较长时间再次进行游戏   )所以由于放在循环中过于麻烦 且不随机  所以在猜大小游戏中srand不要放入循环中   而是将其放入循环外  执行一次就行  之后的数都是在其随机序列上依次执行 完全不一样的数  (不像其放在循环中,每次rand执行的都是随机序列的第一个数 ,而且时间太短的话每个种子相差不大导致其第一个数都相差不大 就游戏错误)所以srand应放在循环外    对于我来说猜大小游戏的具体细节就是这样  其他语句上的运用太过简单  ,小细节也不用讲(不太重要没必要叙述) 所以猜大小游戏细节就是这些   图片如下

01
领券