Distribuição Randômica
Olá pessoal,
Tenho alguns registros numa StringGrid assim:
CENA1
CENA2
CENA3
CENA4
E tenho uns registros para serem inseridos aleatoriamente, de forma que a StringGrid ficará assim:
CENA1
FASE10
FASE12
FASE5
FASE8
CENA2
FASE7
FASE5
FASE8
CENA3
etc...
Ou seja, os registros FASE1, FASE2, etc, deverão ser inseridos aleatoriamente, sem se repetirem dentro de uma mesma cena. Não precisa haver o mesmo número dee fases entre as cenas, mas essa distrribuição deve ser equilibrada.
Alguém tem alguma idéia? Por onde começar????
Tenho alguns registros numa StringGrid assim:
CENA1
CENA2
CENA3
CENA4
E tenho uns registros para serem inseridos aleatoriamente, de forma que a StringGrid ficará assim:
CENA1
FASE10
FASE12
FASE5
FASE8
CENA2
FASE7
FASE5
FASE8
CENA3
etc...
Ou seja, os registros FASE1, FASE2, etc, deverão ser inseridos aleatoriamente, sem se repetirem dentro de uma mesma cena. Não precisa haver o mesmo número dee fases entre as cenas, mas essa distrribuição deve ser equilibrada.
Alguém tem alguma idéia? Por onde começar????
Rafaaugusto
Curtidas 0
Respostas
Beppe
14/06/2005
O básico seria assim:
O que pode variar é a parte que dá um indeterminismo no número de fases por cena. Se fossem fixas, um novo random pracisaria ser gerada em caso de colisão. São as colisões que determinam o número de fases escolhidas neste caso.
const
MaxFases = { numero maximo de fases em cada cena }
var
F: array[1..TotalFases] of Boolean;
I, J: Integer;
begin
FillChar(F, SizeOf(F), 0);
for I := 1 to TotalCenas do
begin
for J := 1 to MaxFases do
F[Random(TotalFases) + 1] := True;
{ ao chegar aqui, as fases escolhidas estão como True em F }
end;
end;O que pode variar é a parte que dá um indeterminismo no número de fases por cena. Se fossem fixas, um novo random pracisaria ser gerada em caso de colisão. São as colisões que determinam o número de fases escolhidas neste caso.
GOSTEI 0
Rafaaugusto
14/06/2005
Ok, obrigado pela resposta.
E nesses casos de colisão, como devo tratar?
E nesses casos de colisão, como devo tratar?
GOSTEI 0
Rafaaugusto
14/06/2005
E nesses casos de colisão, como devo tratar?
GOSTEI 0
Beppe
14/06/2005
Mantenha um array de booleanos ou mapa de bits, uma entrada para cada ítem no universo(ex. 10 entradas para 0..9). Sempre que um número for gerado, vc o marca, caso ele já estava vc gera um outro número, repetindo quantas vezes forem necessárias.
GOSTEI 0