Beginner coding; my second, simpler approach at trying to make all elements distinct.

7 Ansichten (letzte 30 Tage)
So this is what I've come up with on my own to print a 3x3 random matrix of integers only; no element value exceeding n^2 (9 in this case). I think I've done that correctly, it seems to be working. Keep in mind I've just started learning.
what can I add to ensure that every element will be unique, i.e for this case, all numbers 1-9 should be represented ONCE in the 3x3 matrix; none repeating. As you can see from what I've pasted from the command window, there are two 8's!
If you're willing please explain the thought behind it and exactly how I should approach modifying what's existing. Thanks!
Script
___________
n=3
q=(n^2)*rand(n)
ceil(q)
__________
OUTPUT:
n =
3
q =
7.3798 4.7820 5.4986
6.4652 2.9263 7.0092
8.7178 0.9507 3.8111
ans =
8 5 6
7 3 8
9 1 4

Antworten (1)

James Tursa
James Tursa am 16 Feb. 2022
FYI, to generate random integers you can use the randi( ) function instead of ceil(value*rand( )):
To get unique integers you can use the randperm( ) function. E.g.,
randperm(n^2)
That will get you a vector. To get a matrix simply reshape the result:
reshape(randperm(n^2),n,n)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by