qq_41701572 2018-08-31 12:33 采纳率: 18.2%
浏览 621
已结题

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

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

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-08-31 15:27
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误