Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
GetRandom задача
Возникла ситуация, когда нужно использовать эту функцию в цикле (exitwhen ++i==10), но вот незадача, генерируемое число может повторяться =(
Подскажите ваши пример, как можно отсечь повторяющееся число? Но чтобы генерировалось повторно до тех пор, пока не получится число, которое в цикле небыло получено ранее. З.Ы. как уже написал, цикл запускается 10 раз, соответственно нужно получить 10 разных значений, не похожих друг на друга |
08.04.2012, 11:11 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
Sidhe, юзай поиск почаще
» вот функция
((код jass
library RandomIntGenMem
globals
public integer RandMemMax = 8100 private integer array RandMem[RandMemMax] 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
)) автор ScorpioT1000, можно было и посмотреть в библиотеке функций... |
08.04.2012, 11:24 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
сам то понял как она работает?
|
08.04.2012, 11:58 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Вызовом данной функции с мин\макс значениями рандома
очевидно же=/ |
08.04.2012, 12:03 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
да, уже разобрался
спасибо |
08.04.2012, 12:07 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
тока в конце ClearRandomIntMem не забыть, сборосить когда надо =)
надо же, хоть чтото пригодилось |
08.04.2012, 13:29 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|