объединить 2 одинаковые почти одинаковые функции в 1 [закрыто]

Генератор случайных чисел стандарта C, используемый в Lua, не является подходящим для моделирования. Слова «цепь Маркова» предполагают, что вам может понадобиться лучшая. Вот генератор, широко используемый для расчетов Монте-Карло:

local A1, A2 = 727595, 798405  -- 5^17=D20*A1+A2
local D20, D40 = 1048576, 1099511627776  -- 2^20, 2^40
local X1, X2 = 0, 1
function rand()
    local U = X2*A2
    local V = (X1*A2 + X2*A1) % D20
    V = (V*D20 + U) % D40
    X1 = math.floor(V/D20)
    X2 = V - X1*D20
    return V/D40
end

Он генерирует число от 0 до 1, поэтому r = math.floor(rand()*10) + 1 войдет в ваш пример. (Это мультипликативный генератор случайных чисел с периодом 2 ^ 38, множитель 5 ^ 17 и по модулю 2 ^ 40, исходный код Паскаля http://osmf.sscc.ru/~smp/ )

-8
задан Johanes Chan 10 October 2013 в 18:49
поделиться