This commit is contained in:
许大仙 2024-08-06 16:29:00 +08:00
parent 55dac4b86d
commit 548b577d86

View File

@ -546,11 +546,23 @@ int main() {
* 所谓的随机数就是没有规则,并且不能预测的一些数字,也称为真随机数。
* 程序中也是可以产生随机数的,但是是通过一些固定规则产生的,称为伪随机数。
* 常见的伪随机数(线性同余发生器LCG的公式如下所示
* 常见的伪随机数(线性同余方程LCG的公式如下所示
$[ X_{n+1} = (a \cdot X_n + c) \mod m ]$
$ X_{n+1} = (a \cdot X_n + b) \mod m $
* 其中X 是伪随机序列a 是乘数(通常选择一个大于 0 的常数,典型值有 1664525b 是增量(选择一个大于 0 的常数,典型值有 1013904223 m 是模数( 通常选择一个大的常数,常见值有 ( 2^{32} ) ,即 4294967296
> [!NOTE]
>
> 假设 a = 31 b = 13 m = 100 ;那么,伪随机数的公式就是 `X_{n+1} = (31 × X_n + 13) % 100 `
>
> * 如果 `X_{n}` = 1 ,那么 `X_{n+1}` = 44 。
> * 如果 `X_{n}` = 44 ,那么 `X_{n+1}` = 77 。
> * 如果 `X_{n}` = 77 ,那么 `X_{n+1}` = 0 。
> * ...
>
> 最后,将得到 44、77、0、13、16、9 、92、65、28 ... ,其中 1 也称为初始种子(随机数种子)。
* 其中X 是伪随机序列a 是乘数(通常选择一个大于 0 的常数,典型值有 1664525c 是增量选择一个大于0的常数典型值有1013904223 m 是模数( 通常选择一个大的常数,常见值有 ( 2^{32} ) ,即 4294967296
* 工作原理:
* ① 设置初始种子X_0
* 种子值是算法生成随机数序列的起点。