public Integer getRand() {
Integer result = null;
int sum = 100;//后台可更改
int randomNum = new Random().nextInt(sum);// 随机生成1到sum的整数
if (randomNum == 1) {
result = 1;// 一等奖
} else if (randomNum < 5) {
result = 2; // 二等奖
} else if (randomNum <10) {
result = 3; // 三等奖
}
return result;
}
这个概率应该后台可以控制吧!
后台管理有个字段,用来写各个奖品获得概率,
只要我是问问 这样靠谱吗?
大家有啥好的建议!!
其实,概率后台来设定是不是不公平???
不透明!
嗯。。
有多少人抽奖 也不是预知的,
我再思考思考
sum 调成1000,
一等奖 中奖率是千分之一吗???
public Integer getRand() {
Integer result = -1;
int sum = 1000;// 后台可修改
int randomNum = new Random().nextInt(sum);// 随机生成1到sum的整数
int time = new Date().getSeconds() % 2;// 秒数为2 的倍数
if (time == 0) {
if (randomNum == 1) {
result = 1;// 一等奖
} else if (randomNum < 5) {
result = 2; // 二等奖
} else if (randomNum < 25) {
result = 3; // 三等奖
}
}
return result;
}
你可以写个测试方法来测试一下
这样写,逻辑上是没有问题,但是你多测试几次,就会发现中奖率高的吓人
不知为何。。没有不中奖的时候!!!
你这个算法应该不靠谱,中奖率太高。当然,你如果是设计的中奖概率就这么高就没有问题。
中奖的算法,不可能这么简单的。
首先这个 new Random().nextInt(sum)生成的随机数范围是0<=num<sum,,,我不知道你指的靠谱是什么,,
一般先根据时间或其他产生一个种子数,再使用随机数,否则每次产生的随机数序列都相同。
这个中奖率确实是高的,如果是促销之类的一些推广活动,奖品小点,应该是可以的
可以多加几个随机吗if (randomNum == 1) {里面继续随机,想即便就即便}
前端过滤一部分,后端算法过滤一部分!
你这个中奖概率太高了,不行
sum 调成1000,
一等奖 中奖率是千分之一吗???
public Integer getRand() {
Integer result = -1;
int sum = 1000;// 后台可修改
int randomNum = new Random().nextInt(sum);// 随机生成1到sum的整数
int time = new Date().getSeconds() % 2;// 秒数为2 的倍数
if (time == 0) {
if (randomNum == 1) {
result = 1;// 一等奖
} else if (randomNum < 5) {
result = 2; // 二等奖
} else if (randomNum < 25) {
result = 3; // 三等奖
}
}
return result;
}
我改成这样了