封装
//权重随机对象
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%