Clipper On Line • Ver Tópico - Função rnd() no Clipper

Função rnd() no Clipper

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Função rnd() no Clipper

Mensagempor Antonio Job » 01 Ago 2010 15:40

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, no total de 2 vez
Antonio Job
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 1
Data de registro: 01 Ago 2010 15:07
Cidade/Estado: Ipiaú- Bahia
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Função rnd() no Clipper

Mensagempor Maligno » 01 Ago 2010 15:58

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 de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Função rnd() no Clipper

Mensagempor Pablo César » 01 Ago 2010 18:15

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:
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Função rnd() no Clipper

Mensagempor Augusto » 20 Mai 2022 12:17

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 de usuário

Augusto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 465
Data de registro: 26 Ago 2003 17:50
Cidade/Estado: Maricá/RJ
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Função rnd() no Clipper

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 14:09

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Função rnd() no Clipper

Mensagempor Augusto » 20 Mai 2022 14:51

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 de usuário

Augusto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 465
Data de registro: 26 Ago 2003 17:50
Cidade/Estado: Maricá/RJ
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Função rnd() no Clipper

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 15:03

Olá!
Baseado nisso aqui...
mreduz = substr(mconta,1,1)+strzero(rnd(0,999),3,0)

Function rnd(nInicio,nFim)
return INT(RANDOM()%nFim + nInicio)


Adaptei aqui do forum mesmo, sendo clipper.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Função rnd() no Clipper

Mensagempor alxsts » 20 Mai 2022 18:18

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Função rnd() no Clipper

Mensagempor Augusto » 20 Mai 2022 20:42

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 de usuário

Augusto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 465
Data de registro: 26 Ago 2003 17:50
Cidade/Estado: Maricá/RJ
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Função rnd() no Clipper

Mensagempor Augusto » 20 Mai 2022 20:50

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
Avatar de usuário

Augusto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 465
Data de registro: 26 Ago 2003 17:50
Cidade/Estado: Maricá/RJ
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Função rnd() no Clipper

Mensagempor alxsts » 20 Mai 2022 21:05

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Função rnd() no Clipper

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 21:55

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Função rnd() no Clipper

Mensagempor Augusto » 20 Mai 2022 22:05

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
Avatar de usuário

Augusto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 465
Data de registro: 26 Ago 2003 17:50
Cidade/Estado: Maricá/RJ
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Função rnd() no Clipper

Mensagempor alxsts » 22 Mai 2022 19:04

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Função rnd() no Clipper

Mensagempor Adalberto » 25 Mai 2022 21:43

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

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.
Adalberto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 01 Set 2007 01:09
Cidade/Estado: Santa Cruz de la Sierra - Bolivia
Curtiu: 0 vez
Mens.Curtidas: 12 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro