Random Binary Sequence Generator
古いコメントを表示
I need to generate a Random Binary Sequence of 1x10000 size. Purely Random 1's and 0's.
I had implemented it as follows and it does the job with no complaints.
rand_bin = round(0.75*rand(1,10000));
However, are there any Efficient Implementations for this, probably a specific function which was built for this or something?
Thanks.
4 件のコメント
Roger Stafford
2014 年 2 月 3 日
This gives you 1's with probability 1/3 and 0's with probability 2/3. You could also do
ceil(rand(1,10000)-2/3)
or
floor(rand(1,10000)+1/3)
for the same probability, but I doubt if these are any more efficient. I doubt if you can improve on these in any significant way.
Jos (10584)
2014 年 2 月 3 日
Why do you have the factor 0.75 in there? This will give more zeros than ones in the output. Are you sure your need that?
Roger Stafford
2014 年 2 月 3 日
編集済み: Roger Stafford
2014 年 2 月 3 日
I assumed that was what was wanted. Otherwise round(rand(1,10000)) is more efficient.
Sam
2014 年 2 月 4 日
採用された回答
その他の回答 (2 件)
Jos (10584)
2014 年 2 月 3 日
Here are two suggestions:
% with 0 <= P <=1
RBS = rand(1,N) < P
% will give roughly a proportion of P ones among N values
% exactly M ones among N values
RBS = false(1,N) ;
RBS(1:M) = true ;
RBS = RBS(randperm(numel(RBS)
Note: I prefer to store the output as logical arrays (true/false = 1/0) that occupy less memory than double arrays.
2 件のコメント
Sam
2014 年 2 月 4 日
Jos (10584)
2014 年 2 月 6 日
That's a poor reason to use a one-lined solution ;-)
Long but efficient and readable code is much preferred over short and efficient but unreadable code.
(btw rand(1,N)<P is both short and readable)
abderrahim rhoulami
2022 年 9 月 19 日
0 投票
A=randi([0],50,10): Whos
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!