Probabilidad de que los pedazos de un palo roto formen un polígono de lados

Tenemos un palo de longitud L. El palo se rompió en (n-1) puntos elegidos al azar (las longitudes de las partes también pueden ser números no enteros o de coma flotante), por lo que obtenemos n partes. Necesitamos encontrar la probabilidad de que estas n piezas puedan formar un polígono de lados. 
Ejemplos: 
 

Input  : L = 5 n = 3
Output : 0.25
We need to cut rope of length 5
into three parts.

Primero necesitamos encontrar la condición cuando n longitudes pueden formar un polígono de lados. Consideremos un triángulo, sabemos que para un triángulo la longitud del lado más grande debe ser menor que la suma de las longitudes de los otros lados. De manera similar, para un polígono de lados, la longitud del lado más grande debe ser menor que la suma de los otros (n-1) lados. ¿Por qué? Supongamos que partimos el palo en dos mitades iguales. Además, dividimos una de las mitades en (n-1) partes. Nunca podemos colocarlos de manera que formen un polígono cerrado. (En realidad lo mejor que podemos hacer es hacer 2 líneas paralelas). Entonces solo necesitamos encontrar la probabilidad de que ninguna parte tenga una longitud mayor o igual a L/2. 
Ahora tenemos que trabajar en la probabilidad. Hay muchas formas de calcular la probabilidad requerida, usaremos un enfoque geométrico. Considera un círculo de perímetro L. Colocamos n puntos en el perímetro. La probabilidad de que se encuentren en el mismo semicírculo es  \frac{n}{2^{n-1}}    . Consulte este enlace para obtener más información, indíquelo con P(E).
Esta probabilidad es en realidad la misma que romper el palo de modo que al menos una parte tenga una longitud L/2. Pero queremos solo el complemento de este evento, por lo tanto, nuestra respuesta es P(E') = 1-P(E) = 1-\frac{n}{2^{n-1}}
 

C++

// CPP program to find probability that
// a rope of length L when broken into
// n parts form a polygon.
#include<iostream>
 
using namespace std;
 
double printProbability(unsigned L, unsigned n)
{
   unsigned p = (1 << (n-1));
   return 1.0 - ((double)n) / ((double)p);
}
 
int main()
{
   unsigned n = 3, L = 5;
   cout << printProbability(L, n);
   return 0;
}

Java

// Java program to find probability that
// a rope of length L when broken into
// n parts form a polygon.
 
public class GFG {
     
 static double printProbability(int L, int n)
    {
       int p = (1 << (n-1));
       return 1.0 - ((double)n) / ((double)p);
    }
 
    // Driver code
    public static void main(String args[])
    {
         int n = 3, L = 5;
         System.out.println(printProbability(L, n));
            
    }
    // This Code is contributed by ANKITRAI1
}

Python3

# Python3 program to find probability that
# a rope of length L when broken into
# n parts form a polygon.
 
 
 
def printProbability(L, n):
 
    p = (1 << (n-1))
    return 1.0 - (float(n) / float(p) )
 
if __name__=='__main__':
    n = 3
    L = 5
    print(printProbability(L, n))
 
# this code is contributed by ash264

C#

// C# program to find probability 
// that a rope of length L when
// broken into n parts form a polygon.
using System;
 
class GFG
{
static double printProbability(int L, int n)
{
    int p = (1 << (n - 1));
    return 1.0 - ((double)n) /
                 ((double)p);
}
 
// Driver code
public static void Main()
{
    int n = 3, L = 5;
    Console.WriteLine(printProbability(L, n));
}
}
 
// This code is contributed
// by inder_verma

PHP

<?php
// PHP program to find probability that
// a rope of length L when broken into
// n parts form a polygon.
 
function printProbability($L, $n)
{
    $p = (1 << ($n - 1));
    return 1.0 - ($n) / ($p);
}
 
// Driver Code
$n = 3; $L = 5;
echo printProbability($L, $n);
 
// This code is contributed
// by Abby_akku
?>

Javascript

<script>
 
// Javascript program to find probability
// that a rope of length L when broken into
// n parts form a polygon.
 
// Function to find out the
// number of that vertices
function printProbability(L, n)
{
    var p = (1 << (n - 1));
    return 1.0 - n/ p;
}
 
// Driver code
var n = 3, L = 5;
 
document.write(printProbability(L, n));
            
// This code is contributed by Kirti
 
</script>
Producción: 

0.25

 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por SujanDutta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *