More help with probability...
Afficher commentaires plus anciens
Hey, so I fixed the first part of this code, but now the for loop where I use "strcmpi" is not working properly. It's only accounting for "peach' and my peach_count returns 100000 and the other fruits are 0. It's really weird because my function works fine.
function x = produce
A = 1e5;
B = rand;
C = ceil(A*B);
if (C>=1 && C<= 20000);
C = 'peach';
elseif (C>= 20001 && C<= 55000);
C = 'panana';
elseif (C >= 55001);
C = 'papaya';
end
x = C
clc; clear all;
peach_count = 0; panana_count = 0; papaya_count = 0;
N = 1e6;
for k = 1:N
fruit = produce;
if strcmpi(fruit,'peach')
peach_count = peach_count + 1;
elseif strcmpi(fruit, 'panana')
panana_count = panana_count + 1;
elseif strcmpi(fruit, 'papaya')
papaya_count = papaya_count + 1;
end
end
What am I doing wrong??
6 commentaires
Matt Kindig
le 24 Avr 2013
Strange...your code works correctly for me. Have you tried just restarting Matlab and re-running it?
Nadia
le 24 Avr 2013
Matt Kindig
le 24 Avr 2013
Again, that's strange because I tried your entire code (both the function produce and the for loop), and I got reasonable counts for peach_count, papaya_count, and panana_count. When I called 'produce' several times, I get various values of 'peach', 'papaya', and 'pananan'.
Is it possible that you have multiple definitions of 'produce' somewhere? What does:
which produce
whos produce
give you?
Nadia
le 24 Avr 2013
Matt Kindig
le 24 Avr 2013
To explain a little bit about why I was having you do those commands:
- 'which produce' indicates the path to the produce.m file. I was specifically curious whether you had multiple 'produce.m' files on your path, which your results indicate you do not.
- 'whos produce' indicates information about any variables 'produce' in your workspace. I had thought that perhaps you had a variable called 'produce' as well, which was overriding the function call. However, the fact that the whos command returned nothing indicates this is not the case.
I must admit that I'm stumped. Are you putting the function into a separate file as the script? In other words, you should have two different m-files:
=== produce.m
function C = produce
A = 1e5;
B = rand;
C = ceil(A*B);
if (C>=1 && C<= 20000);
C = 'peach';
elseif (C>= 20001 && C<= 55000);
C = 'panana';
elseif (C >= 55001);
C = 'papaya';
end
=== main.m (or some other name)
clc; clear;
peach_count = 0; panana_count = 0; papaya_count = 0;
N = 1e6;
for k = 1:N
fruit = produce;
if strcmpi(fruit,'peach')
peach_count = peach_count + 1;
elseif strcmpi(fruit, 'panana')
panana_count = panana_count + 1;
elseif strcmpi(fruit, 'papaya')
papaya_count = papaya_count + 1;
end
end
Nadia
le 25 Avr 2013
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Desktop dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!