Página 1 de 1
Função rnd() no Clipper
Enviado: 01 Ago 2010 15:40
por Antonio Job
Gostaria de uma .lib ou como faço para simular uma Funçlão RND() função randômica no Clipper? Grato: Antonio Job
Nota de Moderação:por
Maligno: Uma vez que o questionamento acima poderia ser também respondido na seção "Bate-Papo", onde o tópico foi publicado originalmente, achei melhor movê-lo para a seção "CA-Clipper", já que assim ele ficará melhor classificado no fórum, o que poderá futuramente ajudar outros usuários a resolverem questões semelhantes.
Re: Função rnd() no Clipper
Enviado: 01 Ago 2010 15:58
por Maligno
Olá.
Seja bem-vindo ao fórum.
Mesmo sendo possível codificar esse tipo de função, já existem soluções prontas. De momento, só me lembro da biblioteca CA-Tools, que tem essa função pronta.
Função rnd() no Clipper
Enviado: 01 Ago 2010 18:15
por Pablo César
lembro da biblioteca CA-Tools, que tem essa função pronta
Precisamente na CT.LIB existem duas: RAND() e RANDOM()
Existem outras como:
RANDOMIZE() // Power Tools (Ptool52.lib)
GFRAND() // Grumpfish
Também uma função em puro Clipper na internet:
Random
Outro exemplo:
Código: Selecionar todos
FUNCTION GFRAND(N)
static XRNDSEED := .123456789
IF XRNDSEED = .123456789
XRNDSEED += VAL(SUBSTR(TIME(), 7, 2)) / 100
ENDIF
XRNDSEED := (XRNDSEED * 31415821 + 1) / 1000000
RETURN INT( (XRNDSEED -= INT(XRNDSEED)) * N)
Função rnd() no Clipper
Enviado: 20 Mai 2022 12:17
por Augusto
Pessoal...
Desculpem voltar a esse assunto depois de tanto tempo mas estou mexendo num PRG ainda em CLIPPER 5.3 e preciso da função RND().
Já tentei com RAND() e RANDOM() e continua o mesmo erro.
Estou com as bibliotecas CT.LIB e CTP.LIB dentro da pasta \CLIP53\LIB usando:
SET INCLUDE=C:\CLIP53
SET LIB=C:\CLIP53
SET OBJ=C:\CLIP53
SET PLL=C:\CLIP53
\CLIP53\CLIPPER GREDUZ /M /O
\CLIP53\BLINKER FI GREDUZ
E o resultado é:
Alguém me dar uma "luz" ??
Obrigado
Função rnd() no Clipper
Enviado: 20 Mai 2022 14:09
por Itamar M. Lins Jr.
Olá!
Procura no fonte, e coloca aqui para vermos. Como ela é chamada pelo menos. rnd(...
Pode ser qualquer coisa, e tem a passagem de parâmetros...
Saudações,
Itamar M. Lins Jr.
Função rnd() no Clipper
Enviado: 20 Mai 2022 14:51
por Augusto
Itamar... Mandei na MP
Abraços
Função rnd() no Clipper
Enviado: 20 Mai 2022 15:03
por Itamar M. Lins Jr.
Olá!
Baseado nisso aqui...
mreduz = substr(mconta,1,1)+strzero(rnd(0,999),3,0)
Código: Selecionar todos
Function rnd(nInicio,nFim)
return INT(RANDOM()%nFim + nInicio)
Adaptei aqui do forum mesmo, sendo clipper.
Saudações,
Itamar M. Lins Jr.
Função rnd() no Clipper
Enviado: 20 Mai 2022 18:18
por alxsts
Olá!
Augusto escreveu:Estou com as bibliotecas CT.LIB e CTP.LIB dentro da pasta \CLIP53\LIB usando:
SET INCLUDE=C:\CLIP53
SET LIB=C:\CLIP53
SET OBJ=C:\CLIP53
SET PLL=C:\CLIP53
\CLIP53\CLIPPER GREDUZ /M /O
\CLIP53\BLINKER FI GREDUZ
Não está encontrando a LIB.
Ajuste o comando:
De SET LIB=C:\CLIP53
Para SET LIB=C:\CLIP53\Lib
Função rnd() no Clipper
Enviado: 20 Mai 2022 20:42
por Augusto
Amigo... obrigado pela dica MASSSSS continua dando o mesmo erro.
Inclusive, por via das dúvidas, antes mesmo de vc responder eu já havia copiado as LIBS (CT e CTP) para a pasta CLIP53 e não resolveu.
Coloquei do jeitinho que vc falou e ERRO!!
Mais alguma ideia??
Abraços
Função rnd() no Clipper
Enviado: 20 Mai 2022 20:50
por Augusto
Alguém poderia compilar um PRG prá mim no CLIPPER 5.3 usando a função RND()??
Não estou conseguindo... sniff sniff sniff
Aguardo!!
Função rnd() no Clipper
Enviado: 20 Mai 2022 21:05
por alxsts
Olá!
Está incluindo a lib no teu arquivo de compilação?
Poste os teus arquivos de compilação (.rmk, .lnk, .bat) que está usando.
Função rnd() no Clipper
Enviado: 20 Mai 2022 21:55
por Itamar M. Lins Jr.
Olá!
usando a função RND()??
Copia e cola ai no prg a função que fiz.
Já testou ?
Saudações,
Itamar M. Lins Jr.
Função rnd() no Clipper
Enviado: 20 Mai 2022 22:05
por Augusto
Itamar eu não programo em Clipper há mais de 20 anos.... nem lembro como chamar uma função dentro do PRG.
Se vc quiser e puder, te mando o PRG via qqr coisa (wapp sei lá) e aí vc me ajuda nisso... pode ser?
Consegui compilar no HARBOUR a partir de um outro programa que eu tinha aqui (q inclusive foi o Toledo que fez prá mim) mas está dando erro na função MAIN()...
Pensei nisso pois pelo menos rodaria em x64 tbm...
Aguardo seu retorno, obrigado!
Função rnd() no Clipper
Enviado: 22 Mai 2022 19:04
por alxsts
Olá!
Augusto escreveu:Já tentei com RAND() e RANDOM() e continua o mesmo erro.
Estou com as bibliotecas CT.LIB e CTP.LIB dentro da pasta \CLIP53\LIB usando
Se realmente está linkando a CT.LIB, não teria como dar erro. Na CT.LIB, não existe a função RND(). Existem as funções
Rand() e
Random(), conforme consta no
CA Clipper Tools - Books 1 - 3 Norton Guide
RAND()
Generates random numbers
------------------------------------------------------------------------------
Syntax
RAND([<nStartValue>]) --> nRandomValue
Argument
<nStartValue> Designates a beginning value for the random number
generator.
Returns
RAND() returns a random number between 0 and 1.
Description
In contrast to RANDOM(), this function works with a seed algorithm.
Multiple calls always returns the same random number sequence when it
has the same start value. When you first call RANDOM() without a
parameter, it starts as if 100001 is specified as a parameter.
Subsequent random numbers can then be influenced by the < nStartValue>.
If this value is less than or equal to 0, the clock time is brought into
the process.
If you call the function with 100001 as a parameter, it allows you to
restart the generator. Then, if you call the function several times
without parameter, it returns the "standard sequence" of numbers.
Examples
. Call after program start:
? STR(RAND(), 18, 15) // 0.831051100158447
? STR(RAND(), 18, 15) // 0.557946857971956
. If the parameter equals 0, the clock time is incorporated.
Even if the clock has not yet advanced, subsequent values are still
different:
? STR(RAND(), 18, 15) // Time dependent
? STR(RAND(), 18, 15) // Subsequent time
// dependent value
. Use a number greater than 0:
? STR(RAND(23), 18, 15) // 0.121169930053736
? STR(RAND(23), 18, 15) // 0.121169930053736
. Show a "new start":
? STR(RAND(100001), 18, 15) // 0.831051100158447
? STR(RAND(), 18, 15) // 0.557946857971956
See Also: RANDOM()
RANDOM()
Generates random numbers
------------------------------------------------------------------------------
Syntax
RANDOM([<lMode>]) --> nRandomWORD
Argument
<lMode> Designates whether or not to return negative numbers. The
default creates only positive numbers.
Returns
RANDOM() returns a random number in the range of 0 to 65535 or when
<lMode> is designated as .T., in the range of -32768 to +32767.
Description
RANDOM() produces random numbers to create a random distribution of test
data for DEMO programs or any other application.
Note
. If the <lMode> parameter is not specified, only positive
numbers are returned. When < lMode> is set to .T., the function
returns the same number of positive and negative numbers.
Examples
. Create a random number between 0 and 65535:
? RANDOM()
. Create a random number between 0 and 1:
? RANDOM()/65535
. Create a random whole number between 1 and 16:
? RANDOM()%16 +1
. Create a random number between -32768 and +32767:
? RANDOM(.T.)
See Also: RAND()
Função rnd() no Clipper
Enviado: 25 Mai 2022 21:43
por Adalberto
Caro amigo, boa noite.
você pode tentar esta função, para mim funciona muito bem, me ajuda a resolver a questão dos números aleatórios
Código: Selecionar todos
FUNCTION RandInt(nDesde, nHasta)
LOCAL nUltimo, nRandom:= 0, nMult:= INT(SECONDS())
LOCAL nNumero:= (nHasta - nDesde)
LOCAL nLen:= LEN(ALLTRIM(STR(nNumero)))
//
SET DECIMAL TO 16
IF ((VALTYPE(nUltimo) <> "N") .OR. EMPTY(nUltimo))
nUltimo:= ((nMult * ((SECONDS() - INT(SECONDS())) * 100)) % 335544319)
ENDIF
nUltimo:= ((nMult * nUltimo) % 335544319)
nRandom:= VAL(RIGHT(STR(nUltimo / 335544319), nLen))
IF (nRandom > nNumero)
nRandom:= (nNumero - VAL(RIGHT(STR(nRandom), LEN(ALLTRIM(STR(nNumero))) - 1)))
ENDIF
SET DECIMAL TO 2
RETURN(nDesde + INT(nRandom))
Um grande abrazo desde Bolivia.
Adalberto.