Generating a random matrix which has zero entries as well
古いコメントを表示
When I generate a random matrix (for example, with the following code)
bounds = [-15,10];
A = rand(m,m) * range(bounds) + bounds(1)
there is no zero entry in the matrix. Could you please tell me how can I create a random matrix which has zero entries as well?
7 件のコメント
Scott MacKenzie
2021 年 6 月 5 日
What about a random matrix of integers?
A = randi([-15 15], m, m)
Approximately 1 in every 31 values will be zero.
Mojtaba Mohareri
2021 年 6 月 5 日
Scott MacKenzie
2021 年 6 月 5 日
Well, then bear in mind that 0 is effectively 0.00000000 and is no more likely to emerge from the rand function than a number such as 1.23456789. That's why you are not seeing any zeros in the matrix.
Then the chances of getting exactly 0 are minuscule. There are roughly 2^64 values possible if you are using the double datatype (less, because there are some special cases). It is a bit too tricky to calculate from memory how many of those are in the range 0-1, but there are many of them.
You will either have to round, be extremely lucky, generate a giant array, or accept that there will not be any zeros in your matrix.
Mojtaba Mohareri
2021 年 6 月 5 日
the cyclist
2021 年 6 月 5 日
There are several things you could do, but it depends on what properties you need your random distribution to have.
For example, you could generate the m*m random numbers as you originally did, but then generate a random number of zeros from 0:m*m, and fill them into random location in your array.
So, first, think carefully about what specific properties you need your random distribution to have, then we may be able to help you generate that distribution. It is not enough to say "numbers between -15 and 15, where some are zeros". You need to be very specific.
Mojtaba Mohareri
2021 年 6 月 5 日
回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Random Number Generation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!