如何增加从数组中获得特定随机对象的可能性



一般来说,我知道我可以通过以下方式获得数组的随机元素:

var myArray = [x, y, z]
let myArrayLength = UInt32(myArray.count)
let myArrayIndex = Int(arc4random_uniform(myArrayLength))
let randomElement = myArray[myArrayIndex]

但是我怎样才能使y是随机元素的可能性是x的两倍而z是随机元素的可能性是y的三倍呢?

注:在x, y和z是CGPoint s

一个简单的方法是这样重写数组:[x,x,y,z]。得到x的概率变为0.5,得到y的概率变为0.25,得到z的概率变为0.25。只要尽可能多地重复高概率符号,例如[x, y, y, z, z, z, z]就可以满足您的要求。

最新更新