FunRandomSelection.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using IwbZero.Expr;
  3. using IwbZero.ToolCommon.StringModel;
  4. namespace IwbZero.ExprFunctions.Functions
  5. {
  6. /// <summary>
  7. /// 随机概率选择(给出一个(或两个)权重(0-100),产生一个随机数判断是否在 权重范围内)
  8. /// </summary>
  9. public class FunRandomSelection : IIwbFunction
  10. {
  11. public string Invoke(ExprObject exprObj)
  12. {
  13. string result = "TRUE";
  14. var child = exprObj.GetChild(0);
  15. var child2 = exprObj.GetChild(2);
  16. int num1 = child?.Expr.ValI()??0, num2= child2?.Expr.ValI()??0;
  17. if (num2 == 0)
  18. {
  19. num2 = num1 > 100 ? 100 : num1 < 0 ? 0 : num1;
  20. num1 = 0;
  21. }
  22. else
  23. {
  24. num1 = num1 > 100 ? 100 : num1 < 0 ? 0 : num1;
  25. num2 = num2 > 100 ? 100 : num2 < 0 ? 0 : num2;
  26. }
  27. if (num2 < num1)
  28. {
  29. var num3 = num2;
  30. num2 = num1;
  31. num1 = num3;
  32. }
  33. var random = new Random().Next(0, 100);
  34. if (random<num1 || random>num2)
  35. {
  36. result = "FALSE";
  37. }
  38. return result;
  39. }
  40. }
  41. }