【求助】关于一个函数,有些许不理解的地方
lua吧
全部回复
仅看楼主
level 1
--参数是由每个几率组成的表,返还值是随机序号N(1~size之间)
function randGetNum(chance)
local size = table.getn(chance); --比如chance={2000,2000,2000,2000,2000}
local sum = 0;
for i=1,size do
sum = sum + chance[i]; --比如for循环结束时sum=10000
end
local temp = {};
for i=1,size do
if i==1 then
temp[i] = chance[i];
else
temp[i] = temp[i-1] + chance[i]; --比如for循环结束时temp={2000,4000,6000,8000,10000}
end
end
local index = RandGetBetween(1,sum); --(1,10000)
for i=1,size do
if index <= temp[i] then --比如index=5000则 index<=6000,则return 序号3
return i;
end
end
end
关于这个参数,for循环为什么要计算一个sum,然后temp表也没看明白什么意思。
2015年10月23日 09点10分 1
level 11
[冷]粗略一看以为是递归
temp 是区间吧,与sum用来处理,数据相同或数据不是递增或递减,减小取出值不会是相同的概率
2015年10月23日 17点10分 2
level 11
[惊讶][滑稽]毫无意义的取随机值而已,只是取得是固定的随机值[滑稽][滑稽]
2015年10月23日 23点10分 3
就是确定的几个值内的值,并且还写了个保证有一个,(按道理是这样那里的连加就是为了保证吧。)
2015年10月23日 23点10分
1