using System.Collections; using System.Collections.Generic; using UnityEngine; public class ForTest : MonoBehaviour { public TMPro.TMP_Text mP_Text; // Start is called before the first frame update string source = "87.5\r\n95\r\n87.5\r\n90\r\n95\r\n90\r\n97.5\r\n95\r\n100\r\n77.5\r\n97.5\r\n100\r\n95\r\n95\r\n97.5\r\n85\r\n97.5\r\n92.5\r\n95\r\n87.5\r\n92.5\r\n87.5\r\n95\r\n90\r\n97.5\r\n95\r\n87.5\r\n87.5\r\n90\r\n90\r\n90\r\n92.5\r\n92.5\r\n97.5\r\n95\r\n95\r\n90\r\n90\r\n100\r\n90\r\n100\r\n80\r\n90\r\n97.5\r\n92.5\r\n97.5\r\n80\r\n90\r\n90\r\n87.5\r\n92.5\r\n95\r\n87.5\r\n80\r\n90\r\n100\r\n95\r\n87.5\r\n90\r\n87.5\r\n92.5\r\n95\r\n75\r\n90\r\n92.5\r\n97.5\r\n92.5\r\n90\r\n92.5\r\n100\r\n"; void Start() { string _out = ""; string[] strs = source.Split("\r\n"); foreach (var str in strs) { if (!string.IsNullOrEmpty(str)) { float targetAverage = float.Parse(str); List temp = GenerateNumbersFromAverage(targetAverage, 4); string line = ""; //foreach (float num in temp) //{ // line += num.ToString("F1") + "\t"; //} //_out += string.Join("", line) + "\r\n"; foreach (float num in temp) { line += num.ToString("F1") + "\t"; } line += targetAverage.ToString("F1"); _out += line + "\r\n"; } } Debug.Log(_out); mP_Text.text = _out; } List GenerateNumbersFromAverage(float targetAverage, int count) { List numbers = new List(); float total = targetAverage * count; // 生成前4个随机数 float currentSum = 0f; for (int i = 0; i < count - 1; i++) { // 确保剩余的数字能够满足平均值要求 float remainingTotal = total - currentSum; float maxValue = Mathf.Min(100f, remainingTotal); // 不超过100 float minValue = Mathf.Max(60f, remainingTotal - (count - i - 1) * 100f); // 不低于60 int randomNum = Random.Range((int)minValue, (int)maxValue); numbers.Add(randomNum); currentSum += randomNum; } // 计算最后一个数字以确保平均值精确 float lastNum = total - currentSum; numbers.Add(lastNum); return numbers; } //void Start() //{ // string _out = ""; // string[] strs = source.Split("\r\n"); // foreach (var str in strs) // { // List temp = new List(); // for (int i = 0; i < 5; i++) // { // if (!string.IsNullOrEmpty(str)) // { // float num = float.Parse(str); // num += Random.Range(-100 + num, 100 - num); // temp.Add(num.ToString() + "\t"); // } // } // _out += string.Join("", temp) + "\r\n"; // } // Debug.Log(_out); // mP_Text.text = _out; //} }