user-0 提问: 求助，用C语言求将一根棒子任意折成三段，求它们可以构成三角形的概率

回复:
user: user-1
content: 引用 5 楼 weixin_43251091 的回复:[quote=引用 3 楼 user-1 的回复:] [quote=引用 2 楼 user-1 的回复:]  #include <stdlib.h> #include <stdio.h> #include <time.h>  // 初始长度 int nInitLength = 1000;  // 获取边长 void GetEdgeLength(int &a, int &b, int &c) {     int point1 = 1+ rand() % (nInitLength - 1);     int point2 = 2 + rand() % (nInitLength - 2);      if (point2 == point1)         point2 = 1;      if (point2 < point1)     {         int tmp = point2;         point2 = point1;         point1 = tmp;     }      a = point1;     b = point2 - point1;     c = nInitLength - point2; }   bool IsTriangle(int a, int b, int c) {     if (a + b > c && a + c > b && b + c > a)         return true;      return false; }  int main() {     srand(time(NULL));      int a, b, c;     int nSucceedCount = 0;     int nTestCount = 1;     for (int n = 1; n <= 7; ++n)     {         nTestCount *= 10;         nSucceedCount = 0;         for (int idx = 0; idx  < nTestCount; ++idx)         {             GetEdgeLength(a, b, c);             if (IsTriangle(a, b, c))             {                 ++nSucceedCount;             }         }          printf("测试次数%10d, 组成三角形次数%10d, 组成三角形概率%.2f%%\n", nTestCount, nSucceedCount, (nSucceedCount * 1.0f / nTestCount * 100));     }      return 0; }  我只是尝试写了一下，结果发现随着试验次数增多，居然趋近于25%，会不会是一个新的发现？ 测试次数        10, 组成三角形次数         3, 组成三角形概率30.00% 测试次数       100, 组成三角形次数        25, 组成三角形概率25.00% 测试次数      1000, 组成三角形次数       232, 组成三角形概率23.20% 测试次数     10000, 组成三角形次数      2559, 组成三角形概率25.59% 测试次数    100000, 组成三角形次数     25061, 组成三角形概率25.06% 测试次数   1000000, 组成三角形次数    251188, 组成三角形概率25.12% 测试次数  10000000, 组成三角形次数   2509202, 组成三角形概率25.09% 测试次数 100000000, 组成三角形次数  25099636, 组成三角形概率25.10%[/quote] 你好我想问一下你这是给棒子定下了初始长度，再随机两个断点，从而形成随机的三段吧，那能给棒子随机取初始长度吗[/quote]  可以啊，那就再随机一个棒子长度呗

user: user-0
content: 引用 3 楼 user-1 的回复:[quote=引用 2 楼 user-1 的回复:]  #include <stdlib.h> #include <stdio.h> #include <time.h>  // 初始长度 int nInitLength = 1000;  // 获取边长 void GetEdgeLength(int &a, int &b, int &c) {     int point1 = 1+ rand() % (nInitLength - 1);     int point2 = 2 + rand() % (nInitLength - 2);      if (point2 == point1)         point2 = 1;      if (point2 < point1)     {         int tmp = point2;         point2 = point1;         point1 = tmp;     }      a = point1;     b = point2 - point1;     c = nInitLength - point2; }   bool IsTriangle(int a, int b, int c) {     if (a + b > c && a + c > b && b + c > a)         return true;      return false; }  int main() {     srand(time(NULL));      int a, b, c;     int nSucceedCount = 0;     int nTestCount = 1;     for (int n = 1; n <= 7; ++n)     {         nTestCount *= 10;         nSucceedCount = 0;         for (int idx = 0; idx  < nTestCount; ++idx)         {             GetEdgeLength(a, b, c);             if (IsTriangle(a, b, c))             {                 ++nSucceedCount;             }         }          printf("测试次数%10d, 组成三角形次数%10d, 组成三角形概率%.2f%%\n", nTestCount, nSucceedCount, (nSucceedCount * 1.0f / nTestCount * 100));     }      return 0; }  我只是尝试写了一下，结果发现随着试验次数增多，居然趋近于25%，会不会是一个新的发现？ 测试次数        10, 组成三角形次数         3, 组成三角形概率30.00% 测试次数       100, 组成三角形次数        25, 组成三角形概率25.00% 测试次数      1000, 组成三角形次数       232, 组成三角形概率23.20% 测试次数     10000, 组成三角形次数      2559, 组成三角形概率25.59% 测试次数    100000, 组成三角形次数     25061, 组成三角形概率25.06% 测试次数   1000000, 组成三角形次数    251188, 组成三角形概率25.12% 测试次数  10000000, 组成三角形次数   2509202, 组成三角形概率25.09% 测试次数 100000000, 组成三角形次数  25099636, 组成三角形概率25.10%[/quote] 你好我想问一下你这是给棒子定下了初始长度，再随机两个断点，从而形成随机的三段吧，那能给棒子随机取初始长度吗

user: user-0
content: 引用 3 楼 user-1 的回复:[quote=引用 2 楼 user-1 的回复:]  #include <stdlib.h> #include <stdio.h> #include <time.h>  // 初始长度 int nInitLength = 1000;  // 获取边长 void GetEdgeLength(int &a, int &b, int &c) {     int point1 = 1+ rand() % (nInitLength - 1);     int point2 = 2 + rand() % (nInitLength - 2);      if (point2 == point1)         point2 = 1;      if (point2 < point1)     {         int tmp = point2;         point2 = point1;         point1 = tmp;     }      a = point1;     b = point2 - point1;     c = nInitLength - point2; }   bool IsTriangle(int a, int b, int c) {     if (a + b > c && a + c > b && b + c > a)         return true;      return false; }  int main() {     srand(time(NULL));      int a, b, c;     int nSucceedCount = 0;     int nTestCount = 1;     for (int n = 1; n <= 7; ++n)     {         nTestCount *= 10;         nSucceedCount = 0;         for (int idx = 0; idx  < nTestCount; ++idx)         {             GetEdgeLength(a, b, c);             if (IsTriangle(a, b, c))             {                 ++nSucceedCount;             }         }          printf("测试次数%10d, 组成三角形次数%10d, 组成三角形概率%.2f%%\n", nTestCount, nSucceedCount, (nSucceedCount * 1.0f / nTestCount * 100));     }      return 0; }  我只是尝试写了一下，结果发现随着试验次数增多，居然趋近于25%，会不会是一个新的发现？ 测试次数        10, 组成三角形次数         3, 组成三角形概率30.00% 测试次数       100, 组成三角形次数        25, 组成三角形概率25.00% 测试次数      1000, 组成三角形次数       232, 组成三角形概率23.20% 测试次数     10000, 组成三角形次数      2559, 组成三角形概率25.59% 测试次数    100000, 组成三角形次数     25061, 组成三角形概率25.06% 测试次数   1000000, 组成三角形次数    251188, 组成三角形概率25.12% 测试次数  10000000, 组成三角形次数   2509202, 组成三角形概率25.09% 测试次数 100000000, 组成三角形次数  25099636, 组成三角形概率25.10%[/quote] 是啊 通过笔算的计算是可以得到它的概率大概是25%的。谢谢！

user: user-1
content: 引用 2 楼 user-1 的回复: #include <stdlib.h> #include <stdio.h> #include <time.h>  // 初始长度 int nInitLength = 1000;  // 获取边长 void GetEdgeLength(int &a, int &b, int &c) {     int point1 = 1+ rand() % (nInitLength - 1);     int point2 = 2 + rand() % (nInitLength - 2);      if (point2 == point1)         point2 = 1;      if (point2 < point1)     {         int tmp = point2;         point2 = point1;         point1 = tmp;     }      a = point1;     b = point2 - point1;     c = nInitLength - point2; }   bool IsTriangle(int a, int b, int c) {     if (a + b > c && a + c > b && b + c > a)         return true;      return false; }  int main() {     srand(time(NULL));      int a, b, c;     int nSucceedCount = 0;     int nTestCount = 1;     for (int n = 1; n <= 7; ++n)     {         nTestCount *= 10;         nSucceedCount = 0;         for (int idx = 0; idx  < nTestCount; ++idx)         {             GetEdgeLength(a, b, c);             if (IsTriangle(a, b, c))             {                 ++nSucceedCount;             }         }          printf("测试次数%10d, 组成三角形次数%10d, 组成三角形概率%.2f%%\n", nTestCount, nSucceedCount, (nSucceedCount * 1.0f / nTestCount * 100));     }      return 0; }  我只是尝试写了一下，结果发现随着试验次数增多，居然趋近于25%，会不会是一个新的发现？ 测试次数        10, 组成三角形次数         3, 组成三角形概率30.00% 测试次数       100, 组成三角形次数        25, 组成三角形概率25.00% 测试次数      1000, 组成三角形次数       232, 组成三角形概率23.20% 测试次数     10000, 组成三角形次数      2559, 组成三角形概率25.59% 测试次数    100000, 组成三角形次数     25061, 组成三角形概率25.06% 测试次数   1000000, 组成三角形次数    251188, 组成三角形概率25.12% 测试次数  10000000, 组成三角形次数   2509202, 组成三角形概率25.09% 测试次数 100000000, 组成三角形次数  25099636, 组成三角形概率25.10%

user: user-1
content: #include <stdlib.h> #include <stdio.h> #include <time.h>  // 初始长度 int nInitLength = 1000;  // 获取边长 void GetEdgeLength(int &a, int &b, int &c) {     int point1 = 1+ rand() % (nInitLength - 1);     int point2 = 2 + rand() % (nInitLength - 2);      if (point2 == point1)         point2 = 1;      if (point2 < point1)     {         int tmp = point2;         point2 = point1;         point1 = tmp;     }      a = point1;     b = point2 - point1;     c = nInitLength - point2; }   bool IsTriangle(int a, int b, int c) {     if (a + b > c && a + c > b && b + c > a)         return true;      return false; }  int main() {     srand(time(NULL));      int a, b, c;     int nSucceedCount = 0;     int nTestCount = 1;     for (int n = 1; n <= 7; ++n)     {         nTestCount *= 10;         nSucceedCount = 0;         for (int idx = 0; idx  < nTestCount; ++idx)         {             GetEdgeLength(a, b, c);             if (IsTriangle(a, b, c))             {                 ++nSucceedCount;             }         }          printf("测试次数%10d, 组成三角形次数%10d, 组成三角形概率%.2f%%\n", nTestCount, nSucceedCount, (nSucceedCount * 1.0f / nTestCount * 100));     }      return 0; }  我只是尝试写了一下，结果发现随着试验次数增多，居然趋近于25%，会不会是一个新的发现？

user: user-1
content: 核心就是一条线段随机两个点，可以考虑使用random函数 然后就是判断组成三角形的条件，两边之和大于第三边 判断之后记录判断次数和组成三角形的次数  核心代码，随机分三段和循环统计次数，最后计算概率