如何使用默认 PRNG 和索引恢复 python 中的随机数组?
How to revert shuffled array in python with default PRNG and indexes?
将图像移动到数组,然后将其展平并使用给定的 x
种子进行洗牌,使用给定的种子和洗牌过程中的索引应该很容易将其取消洗牌。
- 阅读图片IMG.jpg
random.seed(x)
和随机播放 -> 索引,shuffle_img.jpg
- 取消洗牌
但是,此结果显示生成的 IMG 与具有此颗粒噪声的输入图像相似,但 1:1 不同。
如果不是 RNG 而只是 PRNG,为什么洗牌会产生如此多的噪音?
这与你的随机数无关
请注意,您在创建随机索引时只使用了一次随机数生成器。当您从文件加载索引时,不会使用随机数生成器,因为只读取一个文件。
您的问题出现在不同的地方:您将炒过的 Lena 另存为 .jpg
。因此,可怜的莉娜的乱序图像被压缩,颜色值发生了一点变化。当您再次加载图像并对索引重新排序时,您不会取回原始颜色,而只会取回压缩后的值。
解决方案:将您的图像保存为 *.png
一切正常。
如果您 运行 遇到 alpha 通道问题,只需将图像转换回 RGB:scrambled_img = Image.open(img_path).convert("RGB")
将图像移动到数组,然后将其展平并使用给定的 x
种子进行洗牌,使用给定的种子和洗牌过程中的索引应该很容易将其取消洗牌。
- 阅读图片IMG.jpg
random.seed(x)
和随机播放 -> 索引,shuffle_img.jpg- 取消洗牌
但是,此结果显示生成的 IMG 与具有此颗粒噪声的输入图像相似,但 1:1 不同。
如果不是 RNG 而只是 PRNG,为什么洗牌会产生如此多的噪音?
这与你的随机数无关
请注意,您在创建随机索引时只使用了一次随机数生成器。当您从文件加载索引时,不会使用随机数生成器,因为只读取一个文件。
您的问题出现在不同的地方:您将炒过的 Lena 另存为 .jpg
。因此,可怜的莉娜的乱序图像被压缩,颜色值发生了一点变化。当您再次加载图像并对索引重新排序时,您不会取回原始颜色,而只会取回压缩后的值。
解决方案:将您的图像保存为 *.png
一切正常。
如果您 运行 遇到 alpha 通道问题,只需将图像转换回 RGB:scrambled_img = Image.open(img_path).convert("RGB")