游戏抽名将是怎么实现的

最近身边的人都在玩网易手游(沙盘三国类的),里面有个很重要的元素,就是玩家的武将。他们用玉符抽名将的多少来检验玩家是欧洲人还是非酋。
    我想知道类似抽武将概率算法是怎样写的。诚心请教各位大牛,解惑,感激不尽!

所有的都只有一个核心:Math.random()

就是一个随机数嘛。。random()加以处理给个小范围就可以了

如果每个武将的概率是一样的,那么武将编号然后高级武将数量少一些就可以了。如果是要控制每一个武将的不同概率,那就控制随机数在小范围内是高级武将例如大于0小于1的时候,然后大范围大于1小于99的时候是某个低级武将就可以了

随机函数,标准库里都有。rand()

随机函数的生成方式其实都是伪随机,大致的思路就是有一个数列,这个数列的分布十分离散,然后随机函数比如rand()每次返回这个数列的下一项,所以看起来就像是随机数。设置种子比如srand()干的事情就是设置下一次rand()返回的是数列的第几项。

设置随机数范围,珍惜的武将的范围小,每次抽的时候给个随机数,如果在范围内了你就是欧皇了

我以前还写过这个 这个每个武将在数据库都有配置权重的 什么银币十连抽送红色 金币十连抽送金色.....不堪回首

先上main方法代码
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 0;
int fit = 0;
for(;count double temp = Math.random();
if(temp>0.5d&&temp<0.6){
fit ++;
}
}
System.out.println((double)fit/count);
}
random产生0-1的数,然后模拟抽count(10000)次,符合的次数为fit 经过多次测试 结果都比较接近0.1 与预期符合
当然这只是一种数值的方法 下面还提供一种字符串的方法给你参考
UUID.randomUUID().toString()产生随机串 然后可以在if里可以使用String.contains("")
进行检索 要是极品武将的话 可以填一个 变态的串 比如 5200 如果是垃圾武将可以填个 1
建议:先了解random() 和 UUID() 生成的随机值的范围,然后根据自己需要填写if的条件测试
使用上面的代码可以测试概率,如果多次测试的概率都跟预期接近,那么应该没什么问题了。

前面随机数字代码贴错了,我再贴个随机串的吧,贴到main方法里即可运行 类的话导入java.util里面的
int count = 0;
int fit = 0;
for(;count<10000;count++){
String temp = UUID.randomUUID().toString();
if(temp.contains("45")){
//if语句控制概率,可以自己调 我这句概率稳定在0.14-0.15
fit ++;
}
}
System.out.println((double)fit/count);