How to generate a random number of n bits length?
8 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
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
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
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
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
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
2018 年 9 月 6 日
編集済み: KALYAN ACHARJYA
2018 年 9 月 6 日
@Mohsin I have edited the answer, can you verify it?
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!