如何从“CIRandomGenerator”过滤器中获取不同的随机图像?
How do you get different random images from the `CIRandomGenerator` filter?
在我看来 CIFilter(name: "CIRandomGenerator")
的输出总是相同的,无论是否多次引用一个实例的 outputImage
或是否实例化一个新过滤器:
import CoreImage
let randomFilter = CIFilter(name: "CIRandomGenerator")
let outputImage = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
let outputImage2 = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
// pause for some amount of time so that it's definitely not
// instantiating a PRNG with the same timestamp
let rf2 = CIFilter(name: "CIRandomGenerator")
rf2!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
导致:
如果你检查像素,它们都是一样的。
我没有看到任何类型的 seed
参数可以传入以正确初始化伪随机数生成器。
由于 CIFilter
的范围是无限的,我 可以 随机偏移对 cropped
的调用中的位置,这似乎可行,但似乎像黑客一样。我是否缺少初始化/getNext
这个随机过滤器的正确方法?
我差点把它当作评论,但我觉得它值得回答。
实际上,您向我描述的似乎是正确的。考虑 - 什么是 运行dom 数字生成器?当然它可能需要 "seed",但最终大多数生成器 将 提供一个相当可预测的数字,如果 运行 一次又一次。 (前提是你不开始在等式中添加其他东西。)
所以CIRandomGenerator
的输出可能被认为是同一种东西。从 (0,0) 取 "random" 到无穷大。但是一旦你有了 "seeded" 东西——给定一个不是 (0,0) 的起源——你实际上已经 "captured" 大多数人会考虑的东西 "random".
在我看来 CIFilter(name: "CIRandomGenerator")
的输出总是相同的,无论是否多次引用一个实例的 outputImage
或是否实例化一个新过滤器:
import CoreImage
let randomFilter = CIFilter(name: "CIRandomGenerator")
let outputImage = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
let outputImage2 = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
// pause for some amount of time so that it's definitely not
// instantiating a PRNG with the same timestamp
let rf2 = CIFilter(name: "CIRandomGenerator")
rf2!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
导致:
如果你检查像素,它们都是一样的。
我没有看到任何类型的 seed
参数可以传入以正确初始化伪随机数生成器。
由于 CIFilter
的范围是无限的,我 可以 随机偏移对 cropped
的调用中的位置,这似乎可行,但似乎像黑客一样。我是否缺少初始化/getNext
这个随机过滤器的正确方法?
我差点把它当作评论,但我觉得它值得回答。
实际上,您向我描述的似乎是正确的。考虑 - 什么是 运行dom 数字生成器?当然它可能需要 "seed",但最终大多数生成器 将 提供一个相当可预测的数字,如果 运行 一次又一次。 (前提是你不开始在等式中添加其他东西。)
所以CIRandomGenerator
的输出可能被认为是同一种东西。从 (0,0) 取 "random" 到无穷大。但是一旦你有了 "seeded" 东西——给定一个不是 (0,0) 的起源——你实际上已经 "captured" 大多数人会考虑的东西 "random".