.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sat Jul 24 19:46:03 1993 by Rik Faith (faith@cs.unc.edu) .TH DRAND48 3 "2 Julho 1993" "" "Manual do Programador Linux" .SH NOME drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 \- gera números pseudo-randômicos distribuidos uniformemente .SH SINOPSE .nf .B #include .sp .B double drand48(void); .sp .BI "double erand48(unsigned short int " xsubi [3]); .sp .B long int lrand48(void); .sp .BI "long int nrand48(unsigned short int " xsubi [3]); .sp .B long int mrand48(void); .sp .BI "long int jrand48(unsigned short int " xsubi [3]); .sp .BI "void srand48(long int " seedval ); .sp .BI "unsigned short int *" seed48(unsigned short int " seed16v [3]); .sp .BI "void lcong48(unsigned short int " param [7]); .fi .SH DESCRIÇÃO Essas funções geram números pseudo-randômicos usando o algoritmo de congruência linear e aritmética inteira de 48-bit. .PP As funções \fBdrand48()\fP e \fBerand48()\fP retornam inteiros longos não-negativos distribuidos uniformemente entre [0.0, 1.0). .PP As funções \fBlrand48()\fP e \fBnrand48()\fP retornam inteiros longos não-negativos distribuidos uniformemente entre 0 e 2^31. .PP As funções \fBmrand48()\fP e \fBjrand48()\fP retornam inteiros longos com sinal distribuidos uniformemente entre \-2^31 and 2^31. .PP As funções \fBsrand48()\fP, \fBseed48()\fP e \fBlcong48()\fP são funções de inicialização, as quais deve ser chamadas antes do uso de \fBdrand48()\fP, \fBlrand48()\fP ou \fBmrand49()\fP. As funções \fBerand48()\fP, \fBnrand48()\fP e \fBjrand48()\fP não requerem a chamada da função de inicialização primeiro. .PP Todas as funções trabalham gerando uma sequencia de inteiros 48-bit, \fIXi\fP, de acordo com a formula de congruência linear: .sp .nf .RS .B Xn+1 = (aXn + c) mod m, onde n >= 0 .RE .fi .sp O parâmetro \fIm\fP = 2^48, portanto uma aritmética de inteiro 48-bit é realizada. A não ser que \fBlcong48()\fP seja chamada, \fIa\fP e \fIc\fP são obtidos por: .sp .nf .RS .B a = 0x5DEECE66D .B c = 0xB .RE .fi .sp O valor retornado por qualquer uma das funções \fBdrand48()\fP, \fBerand48()\fP, \fBlrand48()\fP, \fBnrand48()\fP, \fBmrand48()\fP ou \fBjrand48()\fP é computado para primeira geração do próximo 48-bit \fIXi\fP na sequência. Então, o número apropriado de bits, de acordo com o tipo de item de dado a ser retornado, é copiado dos bits de mais alta ordem de \fIXi\fP e transformado no valor retornado. .PP As funções \fBdrand48()\fP, \fBlrand48()\fP e \fBmrand48()\fP armazenam o último 48-bit \fIXi\fP gerado em um buffer interno. As funções \fBerand48()\fP, \fBnrand48()\fP e \fBjrand48()\fP requerem que o programa chamador providencie armazenamento para os valores sucessivos de \fIXi\fP no argumento vetor \fIxsubi\fP. As funções são inicializadas pela colocação do valor inicial de \fIXi\fP no vetor antes da primeira chamada as funções. .PP A função de inicialização \fBsrand48()\fP ajusta os 32-bits de mais alta ordem de \fIXi\fP para o argumento \fIseedval\fP. Os 16-bits de mais baixa ordem são ajustados arbitrariamente para o valor 0x330E. .PP A função de inicialização \fBseed48()\fP seta o valor de \fIXi\fP para o valor 48-bit especificado no argumento vetor \fIseed16v\fP. O valor anterior de \fIXi\fP é copiado em um buffer interno e um ponteiro para esse buffer é retornado por \fBseed48()\fP. .PP A função de inicialização \fBlcong48()\fP permite ao usuário especificar valores iniciais para \fIXi\fP, \fIa\fP e \fIc\fP. O elemento \fIparam[0-2]\fP do argumento vetor especifica \fIXi\fP, \fIparam[3-5]\fP especifica \fIa\fP, e \fIparam[6]\fP especifica \fIc\fP. Após a chamada de \fBlcong48()\fP, uma chamada subsequente a \fBsrand48()\fP ou \fBseed48()\fP irá restaurar os valores padrão de \fIa\fP e \fIc\fP. .SH "CONFORMIDADE" SVID 3 .SH NOTAS Essas funções são declaradas obsoletas por SVID 3, o qual indica que rand(3) deve ser usado em seu lugar. .SH "VEJA TAMBÉM" .BR rand "(3), " random (3) .SH TRADUZIDO POR LDP-BR em 21/08/2000. \&\fR\&\f(CWMarcelo D. Beckmann (tradução)\fR \&\fR\&\f(CWEspaço para o Revisor (revisão)\fR