Nombre aléatoire

12 réponses
AuteurMessage

PepsiCola |
En attente

 

Inscrit le : 09/05/2005

# Le 17/06/2005 à 22:01

Je génère un nombre aléatoire avec :

srand(time());
$nb=rand(1,4);
switch($nb)

etc

Or je remarque que le nombre 1 est un peu plus fréquent à sortir que le nombre 2, qui est un peu plus fréquent que 3 etc

( ça baisse de 20% environ à chaque fois, l'éssai étant réalisé sur plusieurs dizaines de milliers de "tirages", donc significatif )

Avez vous déjà constaté ça ?

Quelle en est la raison ?

Y a t'il une autre manière de faire ?

abonné au gaz

PetitBeurre | Beurre
Anonyme

 

Inscrit le : 09/05/2005

# Le 17/06/2005 à 22:14

Hello,

J'ai déjà constaté cela dans un script de gestionnaire aléatoire basique de bannières.

En revanche, je n'ai aucune compétence technique afin d'apporter une explication rationnelle et logique.

Bool s'il est encore ici, devrait être en mesure de t'apporter une réponse.

Geo 113 | Geoffrey
Modérateur

Photo de Geo 113

Inscrit le : 04/05/2005

# Le 17/06/2005 à 22:24

premièrement tu n'est plus obligé d'initaliser avec srand,
et oui le hasard est pas super au point

CosmixOuvrir dans une nouvelle fenetre
Rendez imprévisible l'Economie; Mentez aux sondages

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 17/06/2005 à 22:28

Euh, chez moi rand() c'est bien un ramdom... (ton dédié est trop vieux geo )

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 17/06/2005 à 22:28

tiens, j'fais un srand(1000*microtime()) je crois, et j'ai pas de pb ...

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

Geo 113 | Geoffrey
Modérateur

Photo de Geo 113

Inscrit le : 04/05/2005

# Le 17/06/2005 à 22:32

mais bien sur mirage,
lis ce que les 2 personnes disent précédement,
et de toute facon c'est du pseudo aléatoire, tout le monde sais que c'est pas parfait.

CosmixOuvrir dans une nouvelle fenetre
Rendez imprévisible l'Economie; Mentez aux sondages

PepsiCola | Jean-Jacques
En attente

 

Inscrit le : 09/05/2005

# Le 17/06/2005 à 22:40

bhamp0 a dit :
tiens, j'fais un srand(1000*microtime()) je crois, et j'ai pas de pb ...


je vais essayer ça

abonné au gaz

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 17/06/2005 à 22:43

En fait, le principe, c'est que plus la graine est grande, plus l'aléatoire est aléatoire, ... mais plus le calcul est "long".

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 17/06/2005 à 22:44

ah non, en fait, j'fais pire, j'fais :

srand((float) microtime()*1000000);

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

PepsiCola | Jean-Jacques
En attente

 

Inscrit le : 09/05/2005

# Le 17/06/2005 à 23:01

ok j'essaie merci

abonné au gaz

erwinol | Erwin
Membre

Photo de erwinol

Inscrit le : 09/05/2005

# Le 17/06/2005 à 23:11

L'aléatoire en informatique est impossible à reproduire ... on essaie juste de s'en rapprocher.

D'ailleurs il y avait une version de mySQL qui merdait complètement quand tu tentais d'obtenir un enregistrement aléatoire. C'était toujours les mêmes qui ressortaient alors que d'autres n'étaient jamais pris.

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 17/06/2005 à 23:15

Je fais pas des rand(1,2) mais rand(10,400) par exemple, c'est peut être pour ça mais ça tombe assez rarement sur le même

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 18/06/2005 à 09:58

Utilisez mt_rand (http://fr.php.net/manual/fr/function.mt-rand.phpOuvrir dans une nouvelle fenetre ) ca marche mieux et c plus simple, pas besoin de srand :

mt_rand (1, 4);

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 19:00:50 | Généré en 2.93ms | Contacts | Mentions légales |