Enteros aleatorios con diferentes probabilidades

Enteros aleatorios con diferentes probabilidades

Este es un seguimiento demi última publicación sobre números aleatorios.

Mi nueva pregunta es:

Digamos que quiero \ngenerar (más o menos) aleatoriamente, de modo que

\n=1 el 10% del tiempo

\n=2 el 20% del tiempo

\n=3 30% del tiempo

\n=4 40% del tiempo

Este código hace que cada valor posible sea \nigualmente probable. ¿Cómo pondero las probabilidades enumeradas anteriormente?

\documentclass{minimal}

\setlength\parindent{0pt}

\usepackage{pgffor}

\begin{document}

\pgfmathdeclarerandomlist{choices}{{1}{2}{3}{4}}
\foreach\x in {1,...,50}
{\pgfmathrandomitem{\n}{choices}\n\\}

\end{document}

Respuesta1

Podrías hacer una variación de mi respuesta a tu pregunta anterior y anidar tres ifthenelses.

\documentclass[border=4mm]{article}
\usepackage{pgffor}
\begin{document}
\foreach\x in {1,...,2000} {
 \pgfmathsetmacro{\tmp}{rnd}
 \pgfmathparse{ifthenelse(\tmp<=0.1,1,ifthenelse(\tmp<=0.3,2,ifthenelse(\tmp<=0.6,3,4)))}\pgfmathresult
}
\end{document}

Tomando prestado un poco de la respuesta de egreg:

\documentclass{article}
\usepackage{pgffor}
\begin{document}
\newcounter{1}\newcounter{2}\newcounter{3}\newcounter{4}
\foreach\x in {1,...,2000} {
 \pgfmathsetmacro{\tmp}{rnd}
 \pgfmathparse{ifthenelse(\tmp<=0.1,1,ifthenelse(\tmp<=0.3,2,ifthenelse(\tmp<=0.6,3,4)))}\pgfmathresult
 \stepcounter{\pgfmathresult}
}

1: \the\value{1}\par
2: \the\value{2}\par
3: \the\value{3}\par
4: \the\value{4}\par
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

\documentclass{article}
\usepackage{pgffor}

\newcommand{\myrandom}{%
  \expandafter\domyrandom\pdfuniformdeviate 10 \domyrandom
}
\def\domyrandom#1\domyrandom{%
  \ifcase#1
  1\or
  2\or
  2\or
  3\or
  3\or
  3\or
  4\or
  4\or
  4\or
  4\fi
}

\begin{document}

\foreach \x in {1,...,100}{\myrandom\space}

\newcounter{1}\newcounter{2}\newcounter{3}\newcounter{4}
\foreach \x in {1,...,1000}{\stepcounter{\myrandom}}
1: \the\value{1}\par
2: \the\value{2}\par
3: \the\value{3}\par
4: \the\value{4}\par

\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Si bien estoy seguro de que existe un método directo para generar números enteros del 1 al 4 para que tengan probabilidades de 0,1, 0,2, 0,3 y 0,4, unindirectoo el método de dos pasos es más sencillo de configurar. Primero, genere un número entero entre 1 y 10 al azar. (Es decir, cada número entero tiene P=0.1). En segundo lugar, verifique si el número entero es menor que 2, 4 y 7, respectivamente, y asigne los números "1", "2", "3" en consecuencia y asocie el número "4". " con la categoría "ninguno de los anteriores", es decir, si el número entero está entre 7 y 10.

Aquí hay una implementación de esta idea basada en LuaLaTeX.

ingrese la descripción de la imagen aquí

\documentclass{article}
\newcommand\x{%
  \directlua{x=math.random(10) % draw an integer between 1 and 10
             if       x<2 then tex.sprint(1) % true if x==1
               elseif x<4 then tex.sprint(2) % true if x==2 or 3
               elseif x<7 then tex.sprint(3) % true if x==4, 5, or 6
               else            tex.sprint(4) % true if x==7, 8, 9, or 10
             end}}
\begin{document}
\obeylines % just for this example
\x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x
\x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x
\x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x
\x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x; \x, \x, \x, \x, \x
\end{document}

Respuesta4

https://en.wikipedia.org/wiki/Pseudo-random_number_sampling

cree una función que tenga valores de x de 0 a 1, con valores de y que generen los valores enteros que desee, en la distribución que desee. Luego use un generador de números aleatorios para producir un número entre 0 y 1, y luego busque el valor de su función. su función puede ser una matriz de 100 elementos, en la que el valor "x" se multiplica por 100 y se redondea hacia abajo...

información relacionada