mirror of
https://github.com/Aexiar/c.git
synced 2024-10-22 14:05:45 +02:00
c
This commit is contained in:
parent
55dac4b86d
commit
548b577d86
@ -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 的常数,典型值有 1664525),b 是增量(选择一个大于 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 的常数,典型值有 1664525),c 是增量(选择一个大于0的常数,典型值有1013904223), m 是模数( 通常选择一个大的常数,常见值有 ( 2^{32} ) ,即 4294967296))。
|
||||
* 工作原理:
|
||||
* ① 设置初始种子(X_0):
|
||||
* 种子值是算法生成随机数序列的起点。
|
||||
|
Loading…
Reference in New Issue
Block a user