Função rnd() no Clipper

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Antonio Job
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 01 Ago 2010 15:07
Localização: Ipiaú- Bahia

Função rnd() no Clipper

Mensagem 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.
Editado pela última vez por Maligno em 01 Ago 2010 15:56, em um total de 2 vezes.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Função rnd() no Clipper

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Função rnd() no Clipper

Mensagem 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)
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Função rnd() no Clipper

Mensagem 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 é:

Imagem

Alguém me dar uma "luz" ??
Obrigado
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Função rnd() no Clipper

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Função rnd() no Clipper

Mensagem por Augusto »

Itamar... Mandei na MP
Abraços
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Função rnd() no Clipper

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Função rnd() no Clipper

Mensagem 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
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Função rnd() no Clipper

Mensagem 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
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Função rnd() no Clipper

Mensagem 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!!
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Função rnd() no Clipper

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Função rnd() no Clipper

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Função rnd() no Clipper

Mensagem 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!
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Função rnd() no Clipper

Mensagem 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()
[]´s
Alexandre Santos (AlxSts)
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Função rnd() no Clipper

Mensagem 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.
Responder