欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【SpEL】随机数

发布时间:2024/9/19 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【SpEL】随机数 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言

  • Spring Expression Language (SpEL)
  • Spring Expression Version : 5.1.3.RELEASE
  • Maven 3.6.3
  • Eclipse Version: 2019-12 (4.14.0)

Eg

import org.junit.Assert; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;public class Test {public static void main(String[] args) {String exp = "T(java.lang.Math).random() * 100";ExpressionParser parser = new SpelExpressionParser();int randomNumber = parser.parseExpression(exp).getValue(Integer.class);Assert.assertTrue(randomNumber>=0 && randomNumber<100);} }

测试随机数

import org.junit.Assert; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;public class Test {public static void main(String[] args) {String exp = "T(java.lang.Math).random() * 100";ExpressionParser parser = new SpelExpressionParser();for (int i=0;i<10000;i++) {int randomNumber = parser.parseExpression(exp).getValue(Integer.class);Assert.assertTrue(randomNumber>=0 && randomNumber<100);} } }

转成 int

import org.junit.Assert; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;public class Test {public static void main(String[] args) {String exp = "T(Double).valueOf(T(java.lang.Math).random() * 100)";ExpressionParser parser = new SpelExpressionParser();int randomNumber = parser.parseExpression(exp).getValue(Integer.class);Assert.assertTrue(randomNumber>=0 && randomNumber<100);} }

转成 int 的另外一个方法

import org.junit.Assert; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;public class Test {public static void main(String[] args) {String exp = "new java.util.Random().nextInt(100)";ExpressionParser parser = new SpelExpressionParser();int randomNumber = parser.parseExpression(exp).getValue(Integer.class);Assert.assertTrue(randomNumber>=0 && randomNumber<100);} }

应用

将点击量随机翻2倍或3倍。

import org.junit.Assert; import org.springframework.expression.EvaluationContext; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext;public class Test {public static void main(String[] args) {String exp = "#clickNum * (new java.util.Random().nextInt(2)+2)";int clickNum = 33;EvaluationContext context = new StandardEvaluationContext();context.setVariable("clickNum", clickNum); ExpressionParser parser = new SpelExpressionParser();int newClickNum = parser.parseExpression(exp).getValue(context, Integer.class);Assert.assertTrue(66==newClickNum || 99==newClickNum);} }

参考

https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#expressions-types

总结

以上是生活随笔为你收集整理的【SpEL】随机数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。