Probabilidad de obtener un cuadrado perfecto cuando se elige un número aleatorio en un rango dado

Dados dos números enteros L y R que denotan un rango, la tarea es encontrar la probabilidad de obtener un número cuadrado perfecto cuando se elige un número aleatorio en el rango L a R.
Ejemplos: 
 

Entrada: L = 6, R = 20 
Salida: 0,133333 
Explicación: 
Cuadrados perfectos en el rango [6, 20] = {9, 16} => 2 cuadrados perfectos 
Números totales en el rango [6, 20] = 15 
Probabilidad = 2 / 15 = 0,133333
Entrada: L = 16, R = 25 
Salida: 0,2 
 

Enfoque: la observación clave en este problema es que el recuento de los cuadrados perfectos en el rango de 0 a un número se puede calcular con las fórmulas dadas: 
 

// El conteo de cuadrados perfectos en el rango de 0 a N se da como 
Conteo de cuadrados perfectos = Floor(sqrt(N)) 
 

De manera similar, el recuento de cuadrados perfectos en el rango dado se puede calcular con la ayuda de las fórmulas anteriores de la siguiente manera: 
 

Recuento de cuadrados perfectos[L, R] = piso (raíz cuadrada (R)) – techo (raíz cuadrada (L)) + 1 
Números totales en el rango = R – L + 1
\text{Probability of getting perfect square} =\frac{floor(sqrt(R)) - ceil(sqrt(L)) + 1}{R - L + 1}
 

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation to find the
// probability of getting a
// perfect square number
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the probability
// of getting a perfect square
// number in a range
float findProb(int l, int r)
{
    // Count of perfect squares
    float countOfPS = floor(sqrt(r)) - ceil(sqrt(l)) + 1;
 
    // Total numbers in range l to r
    float total = r - l + 1;
 
    // Calculating probability
    float prob = (float)countOfPS / (float)total;
    return prob;
}
 
// Driver Code
int main()
{
    int L = 16, R = 25;
    cout << findProb(L, R);
 
    return 0;
}

Java

// Java implementation to find the
// probability of getting a
// perfect square number
 
class GFG{
 
// Function to return the probability
// of getting a perfect square
// number in a range
static float findProb(int l, int r)
{
 
    // Count of perfect squares
    float countOfPS = (float) (Math.floor(Math.sqrt(r)) -
                               Math.ceil(Math.sqrt(l)) + 1);
 
    // Total numbers in range l to r
    float total = r - l + 1;
 
    // Calculating probability
    float prob = (float)countOfPS / (float)total;
    return prob;
}
 
// Driver Code
public static void main(String[] args)
{
    int L = 16, R = 25;
    System.out.print(findProb(L, R));
}
}
 
// This code is contributed by Amit Katiyar

Python3

# Python3 implementation to find 
# the probability of getting a
# perfect square number
import math
 
# Function to return the probability
# of getting a perfect square
# number in a range
def findProb(l, r):
     
    # Count of perfect squares
    countOfPS = (math.floor(math.sqrt(r)) -
                  math.ceil(math.sqrt(l)) + 1)
     
    # Total numbers in range l to r
    total = r - l + 1
 
    # Calculating probability
    prob = countOfPS / total
     
    return prob
     
# Driver code
if __name__=='__main__':
     
    L = 16
    R = 25
     
    print(findProb(L, R))
     
# This code is contributed by rutvik_56   

C#

// C# implementation to find the probability
// of getting a perfect square number
using System;
 
class GFG{
 
// Function to return the probability
// of getting a perfect square
// number in a range
static float findProb(int l, int r)
{
     
    // Count of perfect squares
    float countOfPS = (float)(Math.Floor(Math.Sqrt(r)) -
                            Math.Ceiling(Math.Sqrt(l)) + 1);
 
    // Total numbers in range l to r
    float total = r - l + 1;
 
    // Calculating probability
    float prob = (float)countOfPS / (float)total;
    return prob;
}
 
// Driver Code
public static void Main(String[] args)
{
    int L = 16, R = 25;
     
    Console.Write(findProb(L, R));
}
}
 
// This code is contributed by Amit Katiyar

Javascript

<script>
 
// Javascript implementation to find the
// probability of getting a
// perfect square number
 
// Function to return the probability
// of getting a perfect square
// number in a range
function findProb(l, r)
{
 
    // Count of perfect squares
    var countOfPS = (Math.floor(Math.sqrt(r)) -
                     Math.ceil(Math.sqrt(l)) + 1);
 
    // Total numbers in range l to r
    var total = r - l + 1;
 
    // Calculating probability
    var prob = countOfPS / total;
    return prob;
}
 
// Driver code
var L = 16, R = 25;
 
// Function Call
document.write(findProb(L, R));
 
// This code is contributed by Khushboogoyal499
    
</script>
Producción: 

0.2

 

Complejidad de tiempo: O(1)
 

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *