关于向量置乱算法与rand()的一种实现之间的问题,请看图 10C

图片说明图片说明图片说明
我不懂的是答案讲的是什么意思,为什么rand()这种实现获得的随机数要跟阶乘扯上关系,rand生成的不是一个一个的随机数字吗,为什么是一串随机数字呢?这样生成一串随机数字跟向量置乱有什么关系啊?为什么这种实现不能用于置乱算法?

1个回答

rand每次生成一个伪随机数,它会同时产生一个新的种子(你的代码中的next)。
如果给定一个种子,那么产生的随机数和下一个种子是确定的。
使用相同的种子和确定的伪随机数算法,那么它产生的随机数和下一个种子是确定的。因此下一个随机数和下下个随机数的种子也是确定的,……
也就是说,用一个种子连续生成随机数n次,得到的随机数可以组成一个序列(一串随机数字)。
之所以要考虑“向量置乱”,是因为,我们有很多算法需要借助随机数去模拟(比如洗牌算法、随机排列组合),当然,在真正的随机数算法中这没有什么问题。
问题是我们用的是伪随机数算法,伪随机数算法产生的随机数并非是真正的随机数,这就会导致用它作为模拟的基础的算法可能出现误差。
这文章就是分析这个的。

caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复qq_41701572: 所谓向量,无非就是这个序列构成的数组。
一年多之前 回复
qq_41701572
qq_41701572 我想问的是向量置乱跟这样一串随机数字是怎么搭上边的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问