How to round numbers using the decimals as a probability?

5 visualizaciones (últimos 30 días)
Aron
Aron el 13 de Abr. de 2023
Comentada: Walter Roberson el 13 de Abr. de 2023
Hi, I am trying to create code where the decimals are used as probability of how the value is rounded. For example, I have array of the following values: [ 1.04 ; 0.96 ; 0.22 ; 1.56 ] and for the first element there is a 4% chance the value gets rounded up to 2 and a 96% chance it gets rounded to 1. For the second element there is a 96% probability that it gets rounded up to 1 and a 4% it gets rounded to 0.
  1 comentario
Walter Roberson
Walter Roberson el 13 de Abr. de 2023
What is the rule? Round down 96% of the time for values with even row numbers, and round down 96% of the time for values with odd row numbers? If so then should that be modified if there are multiple columns ?

Iniciar sesión para comentar.

Respuesta aceptada

David Hill
David Hill el 13 de Abr. de 2023
A=10*rand(1,10)
A = 1×10
3.8438 8.9825 9.7798 3.3108 6.2760 5.4551 4.8986 1.2530 4.2234 9.1930
B=floor(A)+((A-floor(A))>rand(1,10))
B = 1×10
3 9 9 3 7 6 5 1 5 9
  3 comentarios
Aron
Aron el 13 de Abr. de 2023
Thanks, I changed it to
A=10*rand(1,10)
B=floor(A)+((A-floor(A))>rand(1,1))
Because otherwise B is the of the size 3x10.
Walter Roberson
Walter Roberson el 13 de Abr. de 2023
No, each entry in A should be rounded individually.
B=floor(A)+((A-floor(A))>rand(size(A)))

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by