Probabilidad de llegar a un punto con 2 o 3 pasos a la vez

Una persona comienza a caminar desde la posición X = 0, encuentre la probabilidad de llegar exactamente a X = N si solo puede dar 2 pasos o 3 pasos. La probabilidad para la longitud del paso 2 se da, es decir, P, la probabilidad para la longitud del paso 3 es 1 – P.
Ejemplos: 
 

Input : N = 5, P = 0.20
Output : 0.32
Explanation :-
There are two ways to reach 5.
2+3 with probability = 0.2 * 0.8 = 0.16
3+2 with probability = 0.8 * 0.2 = 0.16
So, total probability = 0.32.

Es un problema simple de programación dinámica . Es una extensión simple de este problema: – count-of different-ways-express-n-sum-1-3-4
A continuación se muestra la implementación del enfoque anterior. 
 

C++

// CPP Program to find probability to
// reach N with P probability to take
// 2 steps (1-P) to take 3 steps
#include <bits/stdc++.h>
using namespace std;
 
// Returns probability to reach N
float find_prob(int N, float P)
{
    double dp[N + 1];
    dp[0] = 1;
    dp[1] = 0;
    dp[2] = P;
    dp[3] = 1 - P;
    for (int i = 4; i <= N; ++i)
        dp[i] = (P)*dp[i - 2] + (1 - P) * dp[i - 3];
 
    return dp[N];
}
 
// Driver code
int main()
{
    int n = 5;
    float p = 0.2;
    cout << find_prob(n, p);
    return 0;
}

Java

// Java Program to find probability to
// reach N with P probability to take
// 2 steps (1-P) to take 3 steps
import java.io.*;
 
class GFG {
     
    // Returns probability to reach N
    static float find_prob(int N, float P)
    {
        double dp[] = new double[N + 1];
        dp[0] = 1;
        dp[1] = 0;
        dp[2] = P;
        dp[3] = 1 - P;
     
        for (int i = 4; i <= N; ++i)
          dp[i] = (P) * dp[i - 2] +
                        (1 - P) * dp[i - 3];
     
        return ((float)(dp[N]));
    }
     
    // Driver code
    public static void main(String args[])
    {
        int n = 5;
        float p = 0.2f;
        System.out.printf("%.2f",find_prob(n, p));
    }
}
 
 
/* This code is contributed by Nikita Tiwari.*/

Python3

# Python 3 Program to find
# probability to reach N with
# P probability to take 2
# steps (1-P) to take 3 steps
 
# Returns probability to reach N
def find_prob(N, P) :
     
    dp =[0] * (n + 1)
    dp[0] = 1
    dp[1] = 0
    dp[2] = P
    dp[3] = 1 - P
     
    for i in range(4, N + 1) :
        dp[i] = (P) * dp[i - 2] + (1 - P) * dp[i - 3]
 
    return dp[N]
 
# Driver code
n = 5
p = 0.2
print(round(find_prob(n, p), 2))
 
# This code is contributed by Nikita Tiwari.

C#

// C# Program to find probability to
// reach N with P probability to take
// 2 steps (1-P) to take 3 steps
using System;
 
class GFG {
     
    // Returns probability to reach N
    static float find_prob(int N, float P)
    {
        double []dp = new double[N + 1];
        dp[0] = 1;
        dp[1] = 0;
        dp[2] = P;
        dp[3] = 1 - P;
     
        for (int i = 4; i <= N; ++i)
        dp[i] = (P) * dp[i - 2] +
                (1 - P) * dp[i - 3];
     
        return ((float)(dp[N]));
    }
     
    // Driver code
    public static void Main()
    {
        int n = 5;
        float p = 0.2f;
        Console.WriteLine(find_prob(n, p));
    }
}
 
 
/* This code is contributed by vt_m.*/

PHP

<?php
// PHP Program to find probability to
// reach N with P probability to take
// 2 steps (1-P) to take 3 steps
 
// Returns probability to reach N
function find_prob($N, $P)
{
    $dp;
    $dp[0] = 1;
    $dp[1] = 0;
    $dp[2] = $P;
    $dp[3] = 1 - $P;
    for ($i = 4; $i <= $N; ++$i)
        $dp[$i] = ($P) * $dp[$i - 2] +
                  (1 - $P) * $dp[$i - 3];
 
    return $dp[$N];
}
 
// Driver code
$n = 5;
$p = 0.2;
echo find_prob($n, $p);
 
// This code is contributed by mits.
?>

Javascript

<script>
 
// JavaScript Program to find probability to
// reach N with P probability to take
// 2 steps (1-P) to take 3 steps
 
   // Returns probability to reach N
    function find_prob(N, P)
    {
        let dp = [];
        dp[0] = 1;
        dp[1] = 0;
        dp[2] = P;
        dp[3] = 1 - P;
       
        for (let i = 4; i <= N; ++i)
          dp[i] = (P) * dp[i - 2] +
                        (1 - P) * dp[i - 3];
       
        return (dp[N]);
    }
 
// Driver Code
        let n = 5;
        let p = 0.2;
        document.write(find_prob(n, p));
       
      // This code is contributed by chinmoy1997pal.
</script>

Producción : 
 

0.32

Publicación traducida automáticamente

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