14
14
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:id="rand" xml:lang="fr">
16
<refname>rand</refname>
17
<refpurpose>Générateur de nombres pseudo-aléatoires</refpurpose>
20
<title>Séquence d'appel</title>
24
r = rand(m1,m2,...,key)
36
<title>Paramètres</title>
48
chaîne de caractères, <literal>"uniform"</literal> ou
49
<literal>"normal"</literal> (par défaut: <literal>key="uniform"</literal>)
57
une matrice, dont uniquement le contenu réel ou complexe et
58
les dimensions sont prises en compte.
66
une matrice de doubles de taille m1-par-m2-par-... avec des valeurs aléatoires.
74
un entier positif, la graine (par défaut: <literal>s=0</literal>).
81
<title>Description</title>
83
Le but de cette fonction est de retourner un tableau
84
de doubles dont les valeurs sont des nombres aléatoires
86
En fonction des arguments d'entrée, la fonction peut renvoyer une
87
matrice de doubles aléatoires or peut configurer ou récupérer la distribution des nombres
88
aléatoires ou peut configurer ou récupérer la graine du générateur
93
<title>Générer des nombres aléatoires</title>
95
Sans l'argument <literal>key</literal> la syntaxe ci-dessous produit
96
une matrice aléatoire dont chaque élément est la réalisation d'une
97
variable aléatoire suivant une loi donnée (par défaut uniforme sur
102
<term>r=rand()</term>
104
<para>renvoit un scalaire aléatoire.</para>
108
<term>r=rand(m1,m2)</term>
111
est une matrice aléatoire de dimensions <literal>m1</literal>
112
x <literal>m2</literal>.
117
<term>r=rand(m1,m2,..,mn)</term>
120
est une matrice aléatoire de dimensions <literal>m1</literal>
121
x <literal>m2</literal>,.. x <literal>mn</literal>.
126
<term>r=rand(a)</term>
129
est une matrice aléatoire de mêmes dimensions que a.
130
<literal>rand(a)</literal> est complexe si <literal>a</literal> est
131
une matrice complexe.
138
<title>Changer la distribution des nombres aléatoires</title>
140
S'il est présent, l'argument <literal>key</literal> permet de
141
spécifier la loi suivie par défaut par la variable aléatoire.
145
<term>rand("uniform")</term>
147
<para>La loi par défaut est uniforme sur l'intervalle [0,1].</para>
151
<term>rand("normal")</term>
154
La loi par défaut est une loi normale centrée réduite (moyenne
160
<term>key=rand("info")</term>
162
<para>renvoie la distribution courante, c'est à dire "uniform" ou "normal".</para>
168
<title>Récupérer ou changer la graine</title>
170
Il est possible de réinitialiser l'état interne du générateur
171
aléatoire (spécifié par un entier de l'intervalle [0,2^31-1]) ):
175
<term>s=rand("seed")</term>
177
<para>Renvoie la valeur courante de la graine.</para>
181
<term>rand("seed",s)</term>
184
Configure la valeur <literal>s</literal> de la graine (par
185
défaut la graine est initialisée à <literal>s=0</literal> au premier
193
<title>Exemples</title>
195
Dans l'exemple suivant, nous générons des doubles associés à
196
différentes distributions.
198
<programlisting role="example"><![CDATA[
16
<refname>rand</refname>
17
<refpurpose>Générateur de nombres pseudo-aléatoires</refpurpose>
20
<title>Séquence d'appel</title>
24
r = rand(m1,m2,...,key)
36
<title>Paramètres</title>
48
chaîne de caractères, <literal>"uniform"</literal> ou
49
<literal>"normal"</literal> (par défaut: <literal>key="uniform"</literal>)
57
une matrice, dont uniquement le contenu réel ou complexe et
58
les dimensions sont prises en compte.
66
une matrice de doubles de taille m1-par-m2-par-... avec des valeurs aléatoires.
74
un entier positif, la graine (par défaut: <literal>s=0</literal>).
81
<title>Description</title>
83
Le but de cette fonction est de retourner un tableau
84
de doubles dont les valeurs sont des nombres aléatoires
86
En fonction des arguments d'entrée, la fonction peut renvoyer une
87
matrice de doubles aléatoires or peut configurer ou récupérer la distribution des nombres
88
aléatoires ou peut configurer ou récupérer la graine du générateur
93
<title>Générer des nombres aléatoires</title>
95
Sans l'argument <literal>key</literal> la syntaxe ci-dessous produit
96
une matrice aléatoire dont chaque élément est la réalisation d'une
97
variable aléatoire suivant une loi donnée (par défaut uniforme sur
102
<term>r=rand()</term>
104
<para>renvoit un scalaire aléatoire.</para>
108
<term>r=rand(m1,m2)</term>
111
est une matrice aléatoire de dimensions <literal>m1</literal>
112
x <literal>m2</literal>.
117
<term>r=rand(m1,m2,..,mn)</term>
120
est une matrice aléatoire de dimensions <literal>m1</literal>
121
x <literal>m2</literal>,.. x <literal>mn</literal>.
126
<term>r=rand(a)</term>
129
est une matrice aléatoire de mêmes dimensions que a.
130
<literal>rand(a)</literal> est complexe si <literal>a</literal> est
131
une matrice complexe.
138
<title>Changer la distribution des nombres aléatoires</title>
140
S'il est présent, l'argument <literal>key</literal> permet de
141
spécifier la loi suivie par défaut par la variable aléatoire.
145
<term>rand("uniform")</term>
147
<para>La loi par défaut est uniforme sur l'intervalle [0,1].</para>
151
<term>rand("normal")</term>
154
La loi par défaut est une loi normale centrée réduite (moyenne
160
<term>key=rand("info")</term>
162
<para>renvoie la distribution courante, c'est à dire "uniform" ou "normal".</para>
168
<title>Récupérer ou changer la graine</title>
170
Il est possible de réinitialiser l'état interne du générateur
171
aléatoire (spécifié par un entier de l'intervalle [0,2^31-1]) ):
175
<term>s=rand("seed")</term>
177
<para>Renvoie la valeur courante de la graine.</para>
181
<term>rand("seed",s)</term>
184
Configure la valeur <literal>s</literal> de la graine (par
185
défaut la graine est initialisée à <literal>s=0</literal> au premier
193
<title>Exemples</title>
195
Dans l'exemple suivant, nous générons des doubles associés à
196
différentes distributions.
198
<programlisting role="example"><![CDATA[
199
199
// Récupère un double aléatoire (sur la distribution courante)
201
201
// Récupère une matrice de doubles de taille 4-par-6 (sur la distribution courante)
225
225
]]></programlisting>
227
Dans l'exemple suivant, nous générons une matrice complexe de doubles de taille 2-par-3,
228
avec une distribution normale centrée réduite.
230
<programlisting role="example"><![CDATA[
227
Dans l'exemple suivant, nous générons une matrice complexe de doubles de taille 2-par-3,
228
avec une distribution normale centrée réduite.
230
<programlisting role="example"><![CDATA[
231
231
// Génère une matrice complex de doubles aléatoires de taille 2-par-3
232
232
x=rand(2,3)+%i*rand(2,3)
233
233
// Génère une matrice complexe de doubles normaux centrés réduits
234
234
// de la même taille que x
235
235
r=rand(x,"normal")
236
236
]]></programlisting>
238
Dans l'exemple suivant, nous dessinons la distribution de 1000 nombres
239
uniformes produits par <literal>rand</literal>.
241
<programlisting role="example"><![CDATA[
238
Dans l'exemple suivant, nous dessinons la distribution de 1000 nombres
239
uniformes produits par <literal>rand</literal>.
241
<programlisting role="example"><![CDATA[
242
242
r=rand(1000,1,"uniform");
245
245
xtitle("Nombres uniformes par rand","X","Fréquence")
246
246
]]></programlisting>
248
Dans l'exemple suivant, nous dessinons la distribution de nombres normaux
249
centrés réduits produits par <literal>rand</literal>.
251
<programlisting role="example"><![CDATA[
248
Dans l'exemple suivant, nous dessinons la distribution de nombres normaux
249
centrés réduits produits par <literal>rand</literal>.
251
<programlisting role="example"><![CDATA[
252
252
r=rand(1000,1,"normal");
255
255
xtitle("Nombres normaux centrés réduits par rand","X","Fréquence")
256
256
]]></programlisting>
259
<title>Obtenir des nombres aléatoires prévisibles ou moins prévisibles</title>
261
Le générateur pseudo-aléatoire "uniform" est une séquence déterministe
262
dont le but est de reproduire une séquence de nombres aléatoire, indépendents
263
et identiquement distribués dans l'intervalle (0,1).
266
Dans le but de pouvoir obtenir des simulations reproductibles,
267
la graine initiale du générateur est zéro, de telle sorte que la séquence est
268
la même d'une session à l'autre.
269
En d'autres termes, les premiers nombres produits
270
par <literal>rand</literal> sont toujours : 0.2113249, 0.7560439, ...
273
Dans certains cas, nous pourrions vouloir initialiser la
274
graine du générateur dans le but de produire des séquences moins prévisibles.
275
Dans cette situation, nous pouvons initialiser la graine avec la sortie de la
276
fonction <literal>getdate</literal>, comme dans l'exemple suivant:
278
<programlisting role="example"><![CDATA[
259
<title>Obtenir des nombres aléatoires prévisibles ou moins prévisibles</title>
261
Le générateur pseudo-aléatoire "uniform" est une séquence déterministe
262
dont le but est de reproduire une séquence de nombres aléatoire, indépendents
263
et identiquement distribués dans l'intervalle (0,1).
266
Dans le but de pouvoir obtenir des simulations reproductibles,
267
la graine initiale du générateur est zéro, de telle sorte que la séquence est
268
la même d'une session à l'autre.
269
En d'autres termes, les premiers nombres produits
270
par <literal>rand</literal> sont toujours : 0.2113249, 0.7560439, ...
273
Dans certains cas, nous pourrions vouloir initialiser la
274
graine du générateur dans le but de produire des séquences moins prévisibles.
275
Dans cette situation, nous pouvons initialiser la graine avec la sortie de la
276
fonction <literal>getdate</literal>, comme dans l'exemple suivant:
278
<programlisting role="example"><![CDATA[
281
281
]]></programlisting>
284
<title>Le générateur</title>
286
Le générateur de nombres aléatoires <literal>"uniform"</literal> est
288
"Urand, A Universal Random Number Generator" par
289
Michael A. Malcolm, Cleve B. Moler, Stan-Cs-73-334, January 1973, Computer
290
Science Department, School Of Humanities And Sciences, Stanford University.
293
C'est un générateur linéaire à congruence de la forme :
298
x = (a x + c) \textrm{mod} M
303
pour lequel les constantes sont :
284
<title>Le générateur</title>
286
Le générateur de nombres aléatoires <literal>"uniform"</literal> est
288
"Urand, A Universal Random Number Generator" par
289
Michael A. Malcolm, Cleve B. Moler, Stan-Cs-73-334, January 1973, Computer
290
Science Department, School Of Humanities And Sciences, Stanford University.
293
C'est un générateur linéaire à congruence de la forme :
298
x = (a x + c) \textrm{mod} M
303
pour lequel les constantes sont :
308
308
a &=& 843314861\\
309
309
c &=& 453816693\\
315
D'après les auteurs, ce générateur est de longueur complète, c'est à dire
316
que sa période est <latex>M=2^{31}=2147483648</latex>.
319
Le générateur de nombres aléatoires <literal>"normal"</literal>
320
est fondés sur la méthode de Box-Muller, pour lequel la
321
source de nombres uniformes est Urand.
325
<title>Qualité statistique du générateur</title>
327
La fonction <link linkend="grand">grand</link> dispose de générateurs aléatoires produisant
328
des séquences de nombres qui possèdent de meilleures qualités statistiques.
329
Par conséquent, dans les situations où la qualité statistique des séquences de
330
nombres aléatoires est importante, nous devrions plutôt utiliser la fonction <literal>grand</literal>.
331
De plus, la fonction <literal>grand</literal> fournit davantage de fonctionnalités.
334
<refsection role="see also">
335
<title>Voir aussi</title>
336
<simplelist type="inline">
338
<link linkend="grand">grand</link>
341
<link linkend="ssrand">ssrand</link>
344
<link linkend="sprand">sprand</link>
315
D'après les auteurs, ce générateur est de longueur complète, c'est à dire
316
que sa période est <latex>M=2^{31}=2147483648</latex>.
319
Le générateur de nombres aléatoires <literal>"normal"</literal>
320
est fondés sur la méthode de Box-Muller, pour lequel la
321
source de nombres uniformes est Urand.
325
<title>Qualité statistique du générateur</title>
327
La fonction <link linkend="grand">grand</link> dispose de générateurs aléatoires produisant
328
des séquences de nombres qui possèdent de meilleures qualités statistiques.
329
Par conséquent, dans les situations où la qualité statistique des séquences de
330
nombres aléatoires est importante, nous devrions plutôt utiliser la fonction <literal>grand</literal>.
331
De plus, la fonction <literal>grand</literal> fournit davantage de fonctionnalités.
334
<refsection role="see also">
335
<title>Voir aussi</title>
336
<simplelist type="inline">
338
<link linkend="grand">grand</link>
341
<link linkend="ssrand">ssrand</link>
344
<link linkend="sprand">sprand</link>