亲爱的StackOverflow社区,
由于我已经经历过你一次又一次帮助的意愿,我再次来到这里寻求帮助。
截至目前,我有一个包含"客户"的模拟器。我想通过分配各种客户类型(作为属性)对它们进行分类。在某一点上,这个任务工作得非常好但不知何故,我的代码中仍然存在一个错误。但请亲自看看:
ncust = 500 %//(number of customers)
%function call
for ii = 1:ncust;
customers{ii} = Customer(ii);
customers{ii}.setcustTypeDistrib(ncust);
end
每个客户都有一个名为" id" (客户1有id 1 - >谁会猜到?)
function obj = setcustTypeDistrib(obj, ncust) %sets types of customers
if obj.id < ceil(ncust/2) % 50 percent of the customers are type 1
obj.custType = 1;
elseif ceil(ncust/2) < obj.id || obj.id < ceil(0.75*ncust)
obj.custType = 2;
elseif ceil(0.76*ncust) < obj.id
obj.custType = 3;
end
end
但是,如果我检查,例如,客户450(在MATLAB中:customers{450}
)他是客户类型2,尽管他应该是客户类型3.我做错了什么?我觉得完全失去了!
拥有房产的客户:
id: 490
custType: 2
minInterval: 4.7846e+04
答案 0 :(得分:1)
问题是你在ceil(ncust/2) < obj.id || obj.id < ceil(0.75*ncust)
中使用'或'语句,因为ceil(ncust/2) < obj.id
对象id超过一半的所有内容都是第二类。使用'和'语句,您将获得所需的结果。
e.g。
ceil(ncust/2) < obj.id && obj.id < ceil(0.75*ncust)