Генератор случайных чисел с запоминанием уже сгенерированных. Использует нативную ф-цию 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
» Кампания Джека - Глава 1 / Кампания Джека - Глава 1
"Ведь в игре всё по-другому смотреться будет..." нет, все точно так)
» Between The Worlds / Between The Worlds
» Кампания Джека - Глава 1 / Кампания Джека - Глава 1
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Осваиваем JASS - исправления и дополнения
» WarCraft 3 / True Chaos RPG v 0.11a
з.ы. Элементалист ftw
» WarCraft 3 / XGM Lowpoly Model Contest
» WarCraft 3 / XGM Lowpoly Model Contest
» 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 (без анимаций)