Random Number Raffle Generator
이전 댓글 표시
Hi there,
Been a few years since I previously wrote any Matlab scripts so forgive me, and I also know there is quite a lot of topics already covering small parts of this, but I was hoping to collate them.
I am looking to create a simulation that firstly assigns a number of tickets "t" (each with a randomly generated number between two limits (ie 1 and 3000)) to the user. The simulation then runs a loop of 100000 iterations, where, during each iteration, the simulation should randomly generate one number between the two limits. The purpose of this being, everytime this random number (lets call it "Winning_ticket") matches one of the users tickets, a count increases.
I have got to a stage where I can get the script to assign me with ticket numbers, but cannot get it to check if the "Winning_ticket" is a member of my numbers. And it also doesnt count consequtively (it only produces a 0 or 1 as a result). Any help would be greatly appreciated!
The end goal is to automate this process for t=1 all the way to t=40, and then to graph the count of winning tickets.
num_runs = 100000;
max = 3000;
t = 5;
R = randperm(max,t);
Draw = zeros(1,num_runs);
count = 0;
for n = 1:num_runs
Winner(n) = randi([1 max]);
if ismember(Winner,R);
count = count + 1;
end
disp(count)
end
댓글 수: 7
Rik
2021년 1월 29일
What are you expecting ismember(R) to do? I would have to look up the documentation to see what it does with a single input.
In any case, ismember produces a logical array as output.
Why don't you reduce the number of iterations and the max value and step through your code to evaluate line by line what happens?
Callum McIntosh
2021년 1월 29일
편집: Callum McIntosh
2021년 1월 29일
Rik
2021년 1월 29일
Every for-loop can be edited to be a while loop:
for n=a:b:c
%code
end
n=a;
while n<c
%code
n=n+b;
end
Also, check the output of the ismember function. Did you check the documentation for if to see what it does with array inputs?
You are also checking the entire winner array in ismember, instead of only the current iteration.
Callum McIntosh
2021년 1월 29일
편집: Callum McIntosh
2021년 1월 29일
Rik
2021년 1월 29일
Your code uses this as the for syntax: for n = 1:num_runs. So n is n, a is 1, b is 1, and c is num_runs. You can change the condition as you please.
n=1;
while n<num_runs
%your code inside the for loop goes here
n=n+1;
end
I would strongly suggest taking a look at what value you're using as a condition here to make sure you're counting a win correctly. I would suggest doing that before you switch to a while loop.
Callum McIntosh
2021년 1월 29일
Callum McIntosh
2021년 1월 29일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!