0

好吧,我无法获得向量 packet_send 的整数索引。(基本上我正在生成一个介于 1 到 100 之间的随机索引)。当我看到我用作索引的“长度”类时,它是双精度的,这意味着 rand 函数返回双精度值,所以我厌倦了通过将其类型转换为 int16 将其转换为整数。但是我仍然没有得到想要的长度,所以我可以将它用作向量的索引。

for time_slot = 1:1:number_of_slots    
       p = randint(1)*prob;
        lengths =int16( round(rand(1) * max_length)); % lengths value between 1 to 100.. as per the range decided
        if (p == prob)
            packet_send(lengths) = packet_send(lengths) + 1;
            total_number_of_packets = total_number_of_packets + 1 ;
        end
    end
4

1 回答 1

2

您可以使用randi创建随机整数。对于您的代码示例,这可能是:

lengths = randi(max_length, 1);

您还可以在循环开始之前绘制所有随机索引:

allLengths = randi(max_length, number_of_slots);

~edit~
如果randi你的matlab版本没有,你可以使用:

lengths = floor(rand(1)*max_length)+1;
于 2013-09-20T06:12:53.640 回答