Android Kotlin 通用权重随机工具

527 阅读1分钟

封装

//权重随机对象
class AnyRan<T>(){
    private var rans = arrayListOf<T>()//变量list

    //按照权重数添加变量
    fun add(any:T,wei:Int):AnyRan<T>{
        for (i in 1..wei) rans.add(any)
        return this
    }

    //随机出一个变量
    fun ran():T{
        return rans.random()
    }
}

测试使用

AnyRan<String>()
    .add("我爱你",12).add("你好吗",38).add("YYDS",10)
    .add("哈哈哈搞笑",3).add("中国人不骗中国人",37)
    .apply {

        var map=HashMap<String,Int>()
        for (i in 1..999){
            var k = ran()
            var v = map[k]
            if(v!=null)map[k] = ++v else map[k] = 1
        }

        map.forEach {
            println("出现概率: ${it.key} , ${it.value.toFloat()/999*100}%")
        }

    }

测试结果

出现概率: 哈哈哈搞笑 , 3.8038037% 出现概率: YYDS , 10.7107115% 出现概率: 中国人不骗中国人 , 38.33834% 出现概率: 我爱你 , 10.21021% 出现概率: 你好吗 , 36.936935%