
Zamorate escribió:Según Wolfram Alpha, la probabilidad de sacar una pareja es de 0.625, excluyendo los trios, y cuartetos, pero no sé si excluye las dobles parejas...
http://www.wolframalpha.com/input/?i=4%20dice
kpik0 escribió:Yo diría que es 1/6 (el segundo dado que coincida con el primero) * 5/6 (otro diferente) * 4/6 (otro diferente a los 2 anteriores) = 20/216=9,26%![]()
Pero soy un manta así que no me fío ni yo.

#include <iostream>
using namespace std;
bool esValido(int a,int b,int c,int d)
{
int cnt = 0;
if (a == b) cnt++;
if (a == c) cnt++;
if (a == d) cnt++;
if (b == c) cnt++;
if (b == d) cnt++;
if (c == d) cnt++;
return cnt == 1;
}
int main()
{
int posibilidades = 0;
for (int i = 0;i<6;i++)
{
for (int j = 0;j<6;j++)
{
for (int k = 0;k < 6;k++)
{
for (int l = 0;l < 6;l++)
{
if (esValido(i,j,k,l)) posibilidades++;
}
}
}
}
cout<<posibilidades<<"/"<<1296<<endl;
cout<<endl;
cout<<100*posibilidades / 1296.0 <<'%'<<endl; // 6^4 = 1296
}

kpik0 escribió:Dando así otro palo de ciego se me ocurre que habría que multiplicar ese 9.26% por 3! (=6) ya que ese 9.26% es solo para que ocurra en el orden de que salga primero la pareja y dos distintos. Con lo que 55.56% bastante más lógico.
cpardo escribió:@Zamorate Y dobles parejas ojo, tampoco te pueden salir dobles parejas, por tanto aún menor.
Algo se escapa en serio, tiene que ser mucho mayor. (...)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIM 1000000
#define NDICES 4
#define NFACES 6
int pair = 0;
int toak = 0;
int poker = 0;
int experiments = 0;
int counter[NFACES];
void checkPairs(int* dice){
int i, npairs;
// Inicializamos contador
for(i=0;i<NFACES;i++){
counter[i] = 0;
}
// Contamos valores de cada dado
for(i=0;i<NDICES;i++){
counter[dice[i]]++;
}
// Comprobamos que no haya poker
for(i=0;i<NFACES;i++){
if(counter[i] == 4) {
poker++;
return;
}
}
// Comprobamos que no haya trio
for(i=0;i<NFACES;i++){
if(counter[i] == 3){
toak++;
return;
}
}
// Comprobamos que haya una sola pareja
npairs = 0;
for(i=0;i<NFACES;i++){
if(counter[i] == 2){
npairs++;
}
}
if(npairs == 1){
pair++;
return;
}
}
int main(void){
int i,j;
srand(time(NULL));
int dice[NDICES];
for(i=0;i<SIM;i++){
for(j=0;j<NDICES;j++){
dice[j] = rand()%NFACES;
}
experiments++;
checkPairs(dice);
}
printf("Results:\n");
printf("Experiments: %d\n",experiments);
printf("Pairs: %d (%f%%)\n",pair,100*(float)pair/(float)experiments);
printf("Toak: %d (%f%%)\n",toak,100*(float)toak/(float)experiments);
printf("Poker: %d (%f%%)\n",poker,100*(float)poker/(float)experiments);
return 0;
}
Results:
Experiments: 1000000
Pairs: 555633 (55.563301%)
Toak: 92565 (9.256500%)
Poker: 4626 (0.462600%)
Deschamps escribió:Aunque como refuerzo de una tesis pueden valer, los generadores pseudo-aleatorios no sirven como demostración.
f<-function()
{x<-sample(1:6,4,replace=T)
y<-unique(x)
length(y)==3
}
sum(replicate(100000,f()))/100000