Генератор случайных чисел с запоминанием уже сгенерированных. Использует нативную ф-цию GetRandomInt. Инициализация:
Задать private constant integer RandMemMax на нужное количество запоминаемых чисел. Максимум: 8191 Использование:
Функция GetRandomIntMem принимает 2 integer: нижняя граница и верхняя граница, включительно. Возвращает случайный integer (между ними). Сгенерированные ранее числа хранятся в массиве размером RandMemMax, при переполнении массив полностью обнуляется. Поэтому следует задавать его с оценкой обращений.
Функция ClearRandomIntMem ничего не принимает и не возвращает. Используется для обнуления массива запомненных чисел после сессии обращений. Выполнено: vJass
library RandomIntGenMem
globals
public integer RandMemMax = 8100
private integer array RandMem
private integer RandMemSize = 0
endglobals
private function CheckRandMem takes integer value returns boolean
local integer i = 0
loop
exitwhen i>RandMemSize
if value == RandMem[i] then
return false
endif
set i=i+1
endloop
return true
endfunction
private function SaveRandMem takes integer value returns boolean
if RandMemSize > RandMemMax then
return false
endif
set RandMem[RandMemSize] = value
set RandMemSize=RandMemSize+1
return true
endfunction
function ClearRandomIntMem takes nothing returns nothing
set RandMemSize = 0
endfunction
function GetRandomIntMem takes integer lowBound, integer highBound returns integer
local integer r
local integer tmp = 0
if highBound<=lowBound or (highBound-lowBound) > RandMemMax then
return 0
endif
set r = GetRandomInt(lowBound,highBound)
set tmp = r
loop
exitwhen CheckRandMem(r)
if r<highBound and r>=tmp then
set r=r+1
elseif r==highBound then
set r=tmp-1
elseif r<tmp and r>lowBound then
set r=r-1
elseif r<=lowBound then
call ClearRandomIntMem()
set r = GetRandomIntMem(lowBound,highBound)
endif
exitwhen r<lowBound
endloop
if SaveRandMem(r) then
return r
else
call ClearRandomIntMem()
call SaveRandMem(r)
return r
endif
endfunction
endlibrary
к сожалению, у меня очень мало времени, но за то что есть я пишу много-много кода для Jc, поэтому можете думать что оно не выйдет, или-же, наоборот, верить, но в любом случае я почти все свободное время уделяю проекту. Позже, как будет время на новости, там все-все отпишу пдробно и с картинками ;) хотябы будет что поглядеть
[style=highlight]Так, уважемые флудеры, последнее предупреждение о прекращении срача. Если это будет продолжаться, наказание за ваше поведение увеличится в несколько раз.[/style]
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» Unreal Tournament / DOM-Aztec
» WarCraft 3 / Повелитель демонов
» Прочее / Street Fighter 4 уже летом
» Прочее / The Transformers: Revenge of the Fallen
» WarCraft 3 / Blizzard ужесточает правила
» WarCraft 3 / Blizzard ужесточает правила
» Прочее / Перенос Guild Wars 2
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
Инициализация:
Задать private constant integer RandMemMax на нужное количество запоминаемых чисел. Максимум: 8191
Использование:
Функция GetRandomIntMem принимает 2 integer: нижняя граница и верхняя граница, включительно. Возвращает случайный integer (между ними). Сгенерированные ранее числа хранятся в массиве размером RandMemMax, при переполнении массив полностью обнуляется. Поэтому следует задавать его с оценкой обращений.
Функция ClearRandomIntMem ничего не принимает и не возвращает. Используется для обнуления массива запомненных чисел после сессии обращений.
Выполнено: vJass
» StarCraft / Валентинки от Blizzard
» Half-Life / Escape From City 17 - Part One
» StarCraft / Валентинки от Blizzard
» WarCraft 3 / Создание модели в 3DSMax (без анимаций)
» Кампания Джека - Глава 1 / Кампания Джека - Глава 1
» WarCraft 3 / TcX-Xmas-2008
» Повелитель демонов / Повелитель демонов
» WarCraft 3 / Прятки v 1.5
» WarCraft 3 / Прятки v 1.5
» Повелитель демонов / Повелитель демонов
» Прочее / Godfather II - в конце февраля
» WarCraft 3 / Afterlife v3.8c RE v1.2c переведенная