A common way to do this is to generate a uniformly random vector with rand(1,N) and then divide it by its sum. But, as you can see in the figure and the script, this creates biased distributions that undersample high values. The randUniWght function produces better sampling.
You can find more on the topic here
Yavor Kamer (2020). Uniformly distributed weights that sum up to 1 (https://www.mathworks.com/matlabcentral/fileexchange/60284-uniformly-distributed-weights-that-sum-up-to-1), MATLAB Central File Exchange. Retrieved .