How to select k out of n, k being normally distributed but not exceeding n

3 ビュー (過去 30 日間)
Daniel
Daniel 2014 年 5 月 13 日
コメント済み: Matt J 2014 年 5 月 13 日
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.

回答 (1 件)

Matt J
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 件のコメント
Daniel
Daniel 2014 年 5 月 13 日
編集済み: Daniel 2014 年 5 月 13 日
Thank you for the first part.
k should be normally distributed integer over the range 1 to n-1. Initially I ran into problems when k exceeded n and I solved it by decreasing the standard deviation. I am not happy with this, as it still leaves the problem unsolved. Do you have an idea how to do this better?
Edit: nchoosek is sadly not what I need. I don't need the binomial coefficient. I need one set of k numbers froom 0 to n.
Matt J
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.

サインインしてコメントする。

製品

Community Treasure Hunt

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

Start Hunting!

Translated by