| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using System;
- using IwbZero.Expr;
- using IwbZero.ToolCommon.StringModel;
- namespace IwbZero.ExprFunctions.Functions
- {
- /// <summary>
- /// 随机概率选择(给出一个(或两个)权重(0-100),产生一个随机数判断是否在 权重范围内)
- /// </summary>
- public class FunRandomSelection : IIwbFunction
- {
- public string Invoke(ExprObject exprObj)
- {
- string result = "TRUE";
- var child = exprObj.GetChild(0);
- var child2 = exprObj.GetChild(2);
- int num1 = child?.Expr.ValI()??0, num2= child2?.Expr.ValI()??0;
- if (num2 == 0)
- {
- num2 = num1 > 100 ? 100 : num1 < 0 ? 0 : num1;
- num1 = 0;
- }
- else
- {
- num1 = num1 > 100 ? 100 : num1 < 0 ? 0 : num1;
- num2 = num2 > 100 ? 100 : num2 < 0 ? 0 : num2;
- }
- if (num2 < num1)
- {
- var num3 = num2;
- num2 = num1;
- num1 = num3;
- }
- var random = new Random().Next(0, 100);
- if (random<num1 || random>num2)
- {
- result = "FALSE";
- }
- return result;
- }
- }
- }
|