服务器简单算法,大转盘活动,中奖概率,靠谱吗????

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;
}

我改成这样了