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!