电脑如何产生随机数? 5
顺便说说“伪随机数”是怎样产生的。 展开
电脑产生的随机数称为伪随机数,是通过算法模拟的,看上去和随机数一样,实际上能算出来的数就是可以预见的数(对用户来说不可预见,对电脑则是可预见),不是真正的随机数。
从一个大数“种子”开始重复某种迭代计算,通常是加减乘除加求余,种子可以取系统时间,因为用户不可能精确到微秒控制程序运行,就基本保证了每次生成数值的顺序不同
一般来说如果用数字电路产生的都是伪随机数,但由于循环时间太长可视为随机数。而现在有用模拟电路产生的随机数,主要原理是将热噪声放大,然后编码。
扩展资料
随机数的作用
随机数的使用历史已经有数千年。无论是抛硬币还是摇色子,目的是让随机概率决定结果。电脑中的随机数生成器的目的也是如此——生成随机不可预测的结果。
加密法要求数字不能被攻击者猜到,不能多次使用同样的数字。所以需要一种机制产生攻击者无法预测的数字,这些随机数对加密法至关重要,无论你是加密文件还是访问https协议网站,都需要用到随机数。
根据随机数的生成原理,我们把电脑随机数分为两类:“真”随机数和伪随机数。
要生成一个“真”随机数,电脑会检测电脑外部发生的某种物理现象。比如说,电脑可以测量某个原子的放射性衰变。根据量子理论,原子衰变是随机而不可测的,所以这就是宇宙中的“纯粹”随机性。攻击者永远无法预测原子衰变的发生时间,也就不可能猜出随机值。
参考资料来源:
电脑当然能产生随机数,在程序中有特殊用途。
Private Sub Command1_Click()
Dim flag As Boolean
Dim r(1000)
Dim d As String
Randomize '初始化随机种子
For i = 0 To 10 '出11个100以内的不重复数
Do
r(i) = Int(Rnd() * (100))
flag = True
For j = 0 To (i - 1)
If r(j) = r(i) Then
flag = False '如果用过了就退出。
Exit For
End If
Next j
Loop Until flag = True
d = d + ";" + Str(r(i))
Next i
Label1.Caption = d ’在label1中显示出来
End Sub