немного исправленная версия генератора чисел от скорпиота, решил пихнуть хэштаблицу
мне не понравилась его версия потому что она обрывает поток (отсутствует нужная проверка на highBound)
мне не понравилась его версия потому что она обрывает поток (отсутствует нужная проверка на highBound)
код
library RandomIntGenMem
globals
private constant hashtable H = InitHashtable( )
constant key RandomIntKey
endglobals
function ClearRandomIntMem takes nothing returns nothing
call FlushChildHashtable( H, RandomIntKey )
endfunction
function GetRandomIntMem takes integer lowBound, integer highBound returns integer
local integer r
local integer simple
if highBound <= lowBound then
return highBound
endif
set simple = GetRandomInt( lowBound, highBound )
set r = simple
loop
exitwhen not HaveSavedBoolean( H, RandomIntKey, r )
if r < highBound and r >= simple then
set r = r + 1
elseif r == highBound and simple > lowBound then
set r = simple - 1
elseif r > lowBound and r < simple then
set r = r - 1
elseif r <= lowBound or r >= highBound then
set r = simple
exitwhen true
endif
endloop
if HaveSavedBoolean( H, RandomIntKey, r ) then
call FlushChildHashtable( H, RandomIntKey )
endif
call SaveBoolean( H, RandomIntKey, r, true )
return r
endfunction
endlibrary
я бы просто оставил коммент под оригинальным ресом, но тогда бан дадут за археологию, так что пусть идут нафиг
Ред. ScorpioT1000
Ред. ScorpioT1000