e0b7d91d3a241f7bfaf72a418694cc2ef48cfbc9.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. System.register(["cc"], function (_export, _context) {
  2. "use strict";
  3. var _cclegacy, RandomManager, _crd;
  4. _export("RandomManager", void 0);
  5. return {
  6. setters: [function (_cc) {
  7. _cclegacy = _cc.cclegacy;
  8. }],
  9. execute: function () {
  10. _crd = true;
  11. _cclegacy._RF.push({}, "3e09eJBwfZBsLPqFszZLvMS", "RandomManager", undefined);
  12. /** 引擎 utils.ts 中有一些基础数学方法 */
  13. /**
  14. * 随机管理
  15. * @help https://gitee.com/dgflash/oops-framework/wikis/pages?sort_id=12037911&doc_id=2873565
  16. */
  17. _export("RandomManager", RandomManager = class RandomManager {
  18. constructor() {
  19. this.random = null;
  20. }
  21. /** 随机数管理单例对象 */
  22. static get instance() {
  23. if (this._instance == null) {
  24. this._instance = new RandomManager();
  25. this._instance.setRandom(Math.random);
  26. }
  27. return this._instance;
  28. }
  29. /** 设置第三方随机库 */
  30. setRandom(random) {
  31. this.random = random;
  32. }
  33. getRandom() {
  34. return this.random();
  35. }
  36. /**
  37. * 生成指定范围的随机浮点数
  38. * @param min 最小值
  39. * @param max 最大值
  40. */
  41. getRandomFloat(min, max) {
  42. if (min === void 0) {
  43. min = 0;
  44. }
  45. if (max === void 0) {
  46. max = 1;
  47. }
  48. return this.getRandom() * (max - min) + min;
  49. }
  50. /**
  51. * 生成指定范围的随机整数
  52. * @param min 最小值
  53. * @param max 最大值
  54. * @param type 类型
  55. * @example
  56. var min = 1;
  57. var max = 10;
  58. // [min,max) 得到一个两数之间的随机整数,这个值不小于min(如果min不是整数的话,得到一个向上取整的 min),并且小于(但不等于)max
  59. RandomManager.instance.getRandomInt(min, max, 1);
  60. // [min,max] 得到一个两数之间的随机整数,包括两个数在内,这个值比min大(如果min不是整数,那就不小于比min大的整数),但小于(但不等于)max
  61. RandomManager.instance.getRandomInt(min, max, 2);
  62. // (min,max) 得到一个两数之间的随机整数
  63. RandomManager.instance.getRandomInt(min, max, 3);
  64. */
  65. getRandomInt(min, max, type) {
  66. if (type === void 0) {
  67. type = 2;
  68. }
  69. min = Math.ceil(min);
  70. max = Math.floor(max);
  71. switch (type) {
  72. case 1:
  73. // [min,max) 得到一个两数之间的随机整数,这个值不小于min(如果min不是整数的话,得到一个向上取整的 min),并且小于(但不等于)max
  74. return Math.floor(this.getRandom() * (max - min)) + min;
  75. case 2:
  76. // [min,max] 得到一个两数之间的随机整数,包括两个数在内,这个值比min大(如果min不是整数,那就不小于比min大的整数),但小于(但不等于)max
  77. return Math.floor(this.getRandom() * (max - min + 1)) + min;
  78. case 3:
  79. // (min,max) 得到一个两数之间的随机整数
  80. return Math.floor(this.getRandom() * (max - min - 1)) + min + 1;
  81. }
  82. return 0;
  83. }
  84. /**
  85. * 根据最大值,最小值范围生成随机数数组
  86. * @param min 最小值
  87. * @param max 最大值
  88. * @param n 随机个数
  89. * @example
  90. var a = RandomManager.instance.getRandomByMinMaxList(50, 100, 5)
  91. console.log("随机的数字", a);
  92. */
  93. getRandomByMinMaxList(min, max, n) {
  94. var result = [];
  95. for (var i = 0; i < n; i++) {
  96. result.push(this.getRandomInt(min, max));
  97. }
  98. return result;
  99. }
  100. /**
  101. * 获取数组中随机对象
  102. * @param objects 对象数组
  103. * @param n 随机个数
  104. * @example
  105. var b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  106. var r = RandomManager.instance.getRandomByObjectList(b, 5);
  107. console.log("原始的对象", b);
  108. console.log("随机的对象", r);
  109. */
  110. getRandomByObjectList(objects, n) {
  111. var temp = objects.slice();
  112. var result = [];
  113. for (var i = 0; i < n; i++) {
  114. var index = this.getRandomInt(0, temp.length, 1);
  115. result.push(temp.splice(index, 1)[0]);
  116. }
  117. return result;
  118. }
  119. /**
  120. * 定和随机分配
  121. * @param n 随机数量
  122. * @param sum 随机元素合
  123. * @example
  124. var c = RandomManager.instance.getRandomBySumList(5, -100);
  125. console.log("定和随机分配", c);
  126. */
  127. getRandomBySumList(n, sum) {
  128. var residue = sum;
  129. var value = 0;
  130. var result = [];
  131. for (var i = 0; i < n; i++) {
  132. value = this.getRandomInt(0, residue, 3);
  133. if (i == n - 1) {
  134. value = residue;
  135. } else {
  136. residue -= value;
  137. }
  138. result.push(value);
  139. }
  140. return result;
  141. }
  142. });
  143. RandomManager._instance = void 0;
  144. _cclegacy._RF.pop();
  145. _crd = false;
  146. }
  147. };
  148. });
  149. //# sourceMappingURL=e0b7d91d3a241f7bfaf72a418694cc2ef48cfbc9.js.map