Here is my code:
function EPS
Score=zeros(1,20);
X=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1];
for j=1:20
Dealer=X(randi(numel(X)));
if sum(X)-.5*length(X)==0
Pick=X(randi(numel(X)));
else
if sum(X)>size(X)
Pick=1;
if sum(X)<size(X)
Pick=0;
end
end
end
if Pick==Dealer
Score(j)=1;
end
X=X(X~=Dealer);
end
disp(sum(Score)/20);
end
When I run this I get an error on line 11 (Dealer variable as the for loop is line 10): Error using randi First input must be a positive scalar integer value IMAX, or two integer values [IMIN IMAX] with IMIN less than or equal to IMAX.
If I define X as I did in my code and in my command window type X(randi(numel(X))) I do not get an error.
Why is my code giving me the error if in the command window it is working?

3 commentaires

KSSV
KSSV le 24 Août 2017
This line:
X=X(X~=Dealer);
gives a empty matrix after few loops....so randi(emptymatrix) popping error.
Walter Roberson
Walter Roberson le 24 Août 2017
Right. You have multiple equal values so X(X~=Dealer) is deleting multiple entries, all of the duplicates of Dealer. You only have two unique values in X, so after the second time you execute the line you would have deleted everything out of X.
Perhaps you should instead keep track of the random index and delete only that one item.
Tony
Tony le 26 Août 2017
Thank you guys for your help!

Connectez-vous pour commenter.

 Réponse acceptée

KSSV
KSSV le 24 Août 2017

0 votes

Score=zeros(1,20);
X=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1];
for j=1:20
idx = randi(numel(X)) ;
Dealer=X(idx);
if sum(X)-.5*length(X)==0
Pick=X(randi(numel(X)));
else
if sum(X)>size(X)
Pick=1;
if sum(X)<size(X)
Pick=0;
end
end
end
if Pick==Dealer
Score(j)=1;
end
X(idx) = [] ;
end
disp(sum(Score)/20);

2 commentaires

Tony
Tony le 26 Août 2017
Thanks!
Jan
Jan le 27 Août 2017
if sum(X)<size(X) is tricky: Note that size replies a vector.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange

Tags

Question posée :

le 24 Août 2017

Commenté :

Jan
le 27 Août 2017

Community Treasure Hunt

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

Start Hunting!

Translated by