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
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)
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
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
Sam 2014 年 2 月 4 日
Hi Jos & Roger. Thanks! I didn't realize that the 0.75 was redundant. My idea was to force the random generation to multiply with 0.75 and rounding it but i realize now that it is redundant and forces more 0's..
I agree with Roger's 2nd answer thanks for the clarifications...
Cheers!

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

 採用された回答

Wayne King
Wayne King 2014 年 2 月 3 日

2 投票

use randi()
x = randi([0 1],10000,1);

3 件のコメント

monika&bouta
monika&bouta 2016 年 5 月 8 日
hi, we did the same command but w need to put in polar form. any ideas !!?
Setsuna Yuuki.
Setsuna Yuuki. 2020 年 11 月 19 日
Muchas gracias :D
Nitin SHrinivas
Nitin SHrinivas 2021 年 8 月 1 日
If we want to generate all unique coloums or rows is there a function to do so? any suggestions

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

その他の回答 (2 件)

Jos (10584)
Jos (10584) 2014 年 2 月 3 日

1 投票

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
Sam 2014 年 2 月 4 日
Hi. Thanks! it works as well but i implemented the earlier one as i needed a 1 line solution since the rest of my code is quite lengthy.
Jos (10584)
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
abderrahim rhoulami 2022 年 9 月 19 日

0 投票

A=randi([0],50,10): Whos

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

製品

質問済み:

Sam
2014 年 2 月 3 日

回答済み:

2022 年 9 月 19 日

Community Treasure Hunt

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

Start Hunting!

Translated by