How to generate a random number of n bits length?

조회 수: 22 (최근 30일)
Mohsin Shah
Mohsin Shah 2018년 9월 6일
댓글: John D'Errico 2020년 11월 18일
Let's say a function takes input n as the bit length and outputs a random number. For example, for n = 4, the output range is [0 - 15] which also includes the range for n = 3 i.e. [0 - 7]. The function should generate the number in the range [8 - 15] and not in the range [0 - 15]. How to do this and how to generalize it for any n?
  댓글 수: 3
Mohsin Shah
Mohsin Shah 2018년 9월 6일
For n = 3 then the output range is [0-7] which includes the range [0-3] which is for n = 2
KALYAN ACHARJYA
KALYAN ACHARJYA 2018년 9월 6일
편집: KALYAN ACHARJYA 2018년 9월 6일
@Mohsin Check my answer, as per your requirement? If any modification required, let me know.

댓글을 달려면 로그인하십시오.

채택된 답변

Guillaume
Guillaume 2018년 9월 6일
For n = 4 it should generate a number in the range [8-15]
If I understand correctly, you want a 4 bit random number with the MSB always set to 1. That sounds like a strange requirement, probably not thought properly, but this is simply equivalent to generating a 3 bit random number and tacking 1 as the MSB. The generic version of that (generating a n-1 bit number + MSB of 1) is:
n = 4
number = randi([1, 2^(n-1)]) + 2^(n-1) - 1
  댓글 수: 3
ANz Eisenheim
ANz Eisenheim 2020년 11월 18일
I want generate a random large sequence of bits and block the sequence. each block of data consisting of 4 bits. Can Anyone help?
John D'Errico
John D'Errico 2020년 11월 18일
@ANz Eisenheim - please don't revive dead questions with a new question. If you have a new question, then ask it separately.
Regardless, what is the problem? Generate random bits as a vector. rand can do it. randi can do it. As long as the sequence is of a length that is a multiple of 4, you are done. So WTP?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

KALYAN ACHARJYA
KALYAN ACHARJYA 2018년 9월 6일
편집: KALYAN ACHARJYA 2018년 9월 6일
function bit_result=rand_bits(n)
result=randi([2^(n-1), 2^n]);
bit_result=de2bi(result,n)
end
  댓글 수: 3
KALYAN ACHARJYA
KALYAN ACHARJYA 2018년 9월 6일
편집: KALYAN ACHARJYA 2018년 9월 6일
@Mohsin I have edited the answer, can you verify it?
Mohsin Shah
Mohsin Shah 2018년 9월 6일
I appreciate your efforts but the edited function still doesn't work. Check the answer of Guillaume which worked for me.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Sources에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by