0% ont trouvé ce document utile (0 vote)
6 vues8 pages

Générateur de nombres pseudo-aléatoires en R

Transféré par

yousralabdouni6
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues8 pages

Générateur de nombres pseudo-aléatoires en R

Transféré par

yousralabdouni6
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP3

Labdouni yousra

G1wic

EXO1 :
n<- 4

seed<- 3779

random<- function(seed,n){

s<-[Link](seed^2)

while(nchar(s) <(2*n)){

s<-paste0("0",s)

middle_start<-( nchar(s)-2*n)/2+1

middle_end<- middle_start +2*n-1

new_seed<- [Link](substr(s, middle_start,middle_end))

return(new_seed)

for (i in 1:20) {

seed<- random(seed,n)/10^(2*n)

print(seed)
}

L’exécution :

n<- 2

seed<- 3779

random<- function(seed,n){

s<-[Link](seed^2)

while(nchar(s) <(2*n)){

s<-paste0("0",s)

middle_start<-( nchar(s)-2*n)/2+1

middle_end<- middle_start +2*n-1

new_seed<- [Link](substr(s, middle_start,middle_end))

return(new_seed)

for (i in 1:20) {

seed<- random(seed,n)/10^(2*n)

print(seed)
}

L’exécution :

Résumé :
Je fais le principe de « prgn » ce qui prendre un nombre et puis met le nombre au carré et prend le
milieu, mais il le faut être la même taille du nombre. Si le milieu n’a pas la même taille donc le
programme « prgn » est le complété par des zéros

EXO2 :
f <- function(x) {

return((326 * x) %% 332)

x_val <- 0:30000


y_val <- sapply(x_val, f)

plot(x_val, y_val, type = "p", col = "green", xlab = "x", ylab = "f(x)",

main = "Graphe de f(x) = (326 * x) %% 332")

L’exécution :

Résumé :
Le programme définit une fonction mathématique, génère des valeurs pour x, calcule les valeurs
correspondantes de y en appliquant la fonction, puis trace le graphe de la fonction sur un graphique

EXO3 :
1) Pour (m = 16, a = 13, c = 7, X0 = 4).

prgn <- function( a, c, seed , m, n) {

x <- [Link](n) #initialisation de n


x[1] <- seed

for (i in 1:n) {

x[i+1] <- (a * x[i] + c) %% m

return(x/m)

test1 <- prgn( 13, 7, 4,16, 20)

test1

L’exécution :

2) Pour (m = 16, a = 19, c = 0, X0 = 5(impair)).

prgn <- function( a, c, seed , m, n) {

x <- [Link](n) #initialisation de n

x[1] <- seed

for (i in 1:n) {

x[i+1] <- (a * x[i] + c) %% m

return(x/m) }

test2 <- prgn(16, 19, 0, 5, 20)


test2

L’exécution :

3) Pour (m = 7, a = 3, c = 0, X0 = 6).

prgn <- function( a, c, seed , m, n) {

x <- [Link](n) #initialisation de n

x[1] <- seed

for (i in 1:n) {

x[i+1] <- (a * x[i] + c) %% m

return(x/m) }

test3 <- prgn(7, 3, 0, 6, 20)

test3

L’exécution :
Que pensez-vous de la période du générateur pour chaque cas ?

➢ La période d'un générateur à congruences linéaires est la longueur de la séquence avant

qu'elle ne commence à se répéter.

4) Pour (m = (231)−1, a = 75, c = 0).

prgn <- function( a, c, seed , m, n) {

x <- [Link](n) #initialisation de n

x[1] <- seed

for (i in 1:n) {

x[i+1] <- (a * x[i] + c) %% m

return(x/m) }

test4 <- prgn((2^31) - 1, 7^5, 0, 1, 20)

test4

hist(test4, main = "Distribution - Test 4", xlab = "Valeurs générées", col = "lightblue", freq = FALSE)

hist(runif(20), main = "Distribution Uniforme", xlab = "Valeurs générées", col = "lightgreen", freq =

FALSE)

L’exécution :
Résumé :
Ce programme génère des séquences de nombres pseudo-aléatoires en utilisant un Générateur À
Congruences Linéaires avec différentes configurations de paramètres, puis compare ces séquences avec
une distribution uniforme pour le dernier test

Vous aimerez peut-être aussi