kotlin 转盘不同物品不同概率代码实现,不均匀随机算法
时间: 2023-09-06 12:12:21 浏览: 49
下面是 Kotlin 实现的不均匀随机算法,用于实现转盘中不同物品的不同概率:
```kotlin
/**
* 转盘物品
*/
data class Item(val name: String, val probability: Double)
/**
* 不均匀随机算法
*/
fun random(items: List<Item>): Item? {
// 计算总概率
val totalProbability = items.sumByDouble { it.probability }
// 生成随机数
val randomValue = Math.random() * totalProbability
// 遍历物品列表,计算随机值所处的区间
var currentProbability = 0.0
for (item in items) {
currentProbability += item.probability
if (randomValue <= currentProbability) {
return item
}
}
// 如果遍历完仍未找到物品,则返回 null
return null
}
```
使用时,可以先定义不同物品的概率,然后将它们作为参数传递给 `random` 函数,即可获得一个随机选择的物品。
例如,下面的代码定义了三种物品,它们的概率分别为 0.2、0.3 和 0.5,并随机选择一个物品:
```kotlin
val items = listOf(
Item("A", 0.2),
Item("B", 0.3),
Item("C", 0.5)
)
val item = random(items)
println("随机选择的物品是:${item?.name}")
```