Generating integer random numbers from power-law distribution

6 visualizaciones (últimos 30 días)
Is there a code to generate integer random numbers through power-law distribution of the form p(x)=x^-(alpha+1)?
thanks in advance

Respuesta aceptada

Image Analyst
Image Analyst el 13 de Dic. de 2013
Try this: RANDRAW

Más respuestas (3)

Miguel Ángel
Miguel Ángel el 13 de Dic. de 2013
Editada: Miguel Ángel el 13 de Dic. de 2013
I don't know if round,ceil or floor is correct, but in case this may be a way
n=1000;
p=rand(1,n);
alpha=0.1;
%inverse of distribution
%properties of logs %LOGa(n) = LOGb(N) / LOGb(a)
%~round/ceil/floor
x=round(log(p)/log(alpha+1));
  1 comentario
Sunstar
Sunstar el 13 de Dic. de 2013
Thank you for your reply. Unfortunately, I cannot simply round or floor or ceil. I need to generate real integers.

Iniciar sesión para comentar.


Roger Stafford
Roger Stafford el 13 de Dic. de 2013
The distribution you mention is equivalent to the zeta distribution with alpha+1 replaced by s. See the website
http://en.wikipedia.org/wiki/Zeta_distribution
As Image Analyst has mentioned, there is a File Exchange contribution called 'randraw' which is located at:
http://www.mathworks.com/matlabcentral/fileexchange/7309-randraw
which claims to generate random numbers in accordance with fifty various distributions including the zeta distribution. It might be what you need.

Weijia Chen
Weijia Chen el 18 de Sept. de 2019
I also meet the same problem. The minimum integer that zeta distribution can generate seems to be 1, but I hope 0 can be generated. Is there any other distributin can do this? Thank you

Categorías

Más información sobre Random Number Generation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by