JAVA 生成随机数并根据后台概率灵活生成的实例代码

2025-05-29 0 103

最近碰到一个大转盘的业务,奖品可根据数据后台灵活设置中奖概率,看起来挺简单的业务功能,但实现起来对我这个毫无经验的人来说并不容易,后面又碰到一个根据后台概率随机获取不同概率的档位积分,前面是两个实际中业务要用到的话不多说吧,直接上我写概率工具类吧。

1:第一种方法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37
/**

* 根据概率 获取随机积分

*

* @param rdm

* @return

*/

//这里的参数是一个存储概率集合当然你也可以用数组

public static Integer randomPoints(ArrayList<Double> rdm) {

ArrayList<Double> cdm = rdm;

//这里是将概率集合重组 比如 0.2 0.3 0.1 0.4 四个数据的集合

for (int i = 1; i < cdm.size() - 1; i++) {

cdm.set(i, cdm.get(i) + cdm.get(i - 1));

}

cdm.set(cdm.size() - 1, 1.0);

//重组后 变成0.2 0.5 0.6 1.0 四个数据的集合

double randomNumber;

randomNumber = Math.random();

//随机生成一个0到1的随机数

//接下就很简单了你只要循环重组集合 如果随机数小于那个值 就是返回 I 就好了

for(int i=0;i<cdm.size();i++){

if(randomNumber<cdm.get(i)){

return i;

}

}

return -1; // 正常情况之下不应该到这一步的。因为cdf的最后一个概率应该是1

}

2:第二种方法

这个是网上找到的 原理也是一样 不过这里用法比较固定,但效率明显比第一个更高

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69
public class MathRandom

{

/**

* 0出现的概率为%50

*/

public static double rate0 = 0.50;

/**

* 1出现的概率为%20

*/

public static double rate1 = 0.20;

/**

* 2出现的概率为%15

*/

public static double rate2 = 0.15;

/**

* 3出现的概率为%10

*/

public static double rate3 = 0.10;

/**

* 4出现的概率为%4

*/

public static double rate4 = 0.04;

/**

* 5出现的概率为%1

*/

public static double rate5 = 0.01;

/**

* Math.random()产生一个double型的随机数,判断一下

* 例如0出现的概率为%50,则介于0到0.50中间的返回0

* @return int

*

*/

private int PercentageRandom()

{

double randomNumber;

randomNumber = Math.random();

if (randomNumber >= 0 && randomNumber <= rate0)

{

return 0;

}

else if (randomNumber >= rate0 && randomNumber <= rate0 + rate1)

{

return 1;

}

else if (randomNumber >= rate0 + rate1

&& randomNumber <= rate0 + rate1 + rate2)

{

return 2;

}

else if (randomNumber >= rate0 + rate1 + rate2

&& randomNumber <= rate0 + rate1 + rate2 + rate3)

{

return 3;

}

else if (randomNumber >= rate0 + rate1 + rate2 + rate3

&& randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4)

{

return 4;

}

else if (randomNumber >= rate0 + rate1 + rate2 + rate3 + rate4

&& randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4

+ rate5)

{

return 5;

}

return -1;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://blog.csdn.net/hua18123870251/article/details/50384939

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 JAVA 生成随机数并根据后台概率灵活生成的实例代码 https://www.kuaiidc.com/115457.html

相关文章

发表评论
暂无评论