How to select k out of n, k being normally distributed but not exceeding n
2 ビュー (過去 30 日間)
古いコメントを表示
Hello everyone,
I need to select k numbers out of n without generating doubles and k must not exceed n.
I used to do it by first getting k with normrnd and a very low variation and then finding random numbers and checking for doubles until I have my set of k. Not a very nice approach I know.
Just now I found randperm and it allows me to do this more elegantly, but the prime use of that function, the permutation, is wasted effort in my use. I also switched from normrnd(mu,sigma) to mu+sigma*randn.
Does anyone know a more fficient way of doing this?
Thank you.
0 件のコメント
回答 (1 件)
Matt J
2014 年 5 月 13 日
編集済み: Matt J
2014 年 5 月 13 日
There is nchoosek(n,k).
It's not clear, however, what "k being normally distributed" is supposed to mean. Clearly, k is always a positive integer, so it cannot be normally distributed.
2 件のコメント
Matt J
2014 年 5 月 13 日
I still have no idea what a "normally distributed integer" means. It is definitely not standard terminology. Perhaps you mean a uniformly distributed integer, in which case you could use RANDI.
参考
カテゴリ
Help Center および File Exchange で Random Number Generation についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!