IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[sql server 2005] Pertinence de la fonction rand()?


Sujet :

MS SQL Server

  1. #1
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut [sql server 2005] Pertinence de la fonction rand()?
    Bonjour,

    En surfant sur google et le forum de developpez.net, on peut voir une polémique sur la fonction rand() de transact-sql, comme quoi les nombres pseudo-aléatoires générés ne seraient pas vraiment utilisables car pas assez aléatoires...

    Sur les tests que j'ai pu faire, cela ne m'a pas sauté aux yeux, et pourtant j'utilise rand() dans une boucle et sans seeds.



    Est ce que rand() à été amélioré depuis les version précédentes de sql-server?
    rand() est-il vraiment intéressant ou pas finalement?

    Merci de votre contribution

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    J'ai développé un système de tirage au sort et le département légal n'a pas voulu que nous utilisions la fonction RAND().

    J'ai simplement fait des

  3. #3
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    ok,

    On peut donc dire qu'une fonction / PS random() basée sur newid() serait mieux que la fonction rand().

    Merci de l'info,si quelqu'un à d'autres retours à faire...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    "Mieux" est suggestif. En performance pure, le RAND() risque d'etre mieux.

    Par contre, existe nombre de document légitimes qui font état du niveau incroyable d'unicité des GUIDS.

    En théorie, on pourrait générer des GUID, les écrire sur des billes et remplir plusieurs milliards de fois une sphère grande comme le soleil avant de statistiquement avoir une chance de créer un doublon.

    Alors que la fonction RAND() se base sur des valeurs qui, à la limite, peuvent être prédites.

    Voici ce que MSDN en dit:

    The RAND function is a pseudorandom number generator that operates in a manner similar to the C run-time library rand function. If no seed is provided, the system generates its own variable seed numbers. If you call RAND with a seed value, you must use variable seed values to generate random numbers. If you call RAND multiple times with the same seed value, it returns the same generated value. The following script returns the same value for the calls to RAND because they all use the same seed value:
    Donc il faut se baser sur quelque chose comme la fonction GETDATE() pour randomiser et là, ça devient suffisamment prévisible pour que ce ne soit pas acceptable légalement.

  5. #5
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Oui, tu confirmes bien mes impressions.

    Je dispose d'une fonction rand basée sur newid().
    J'avais juste peur pour les performances.

    De toutes façon, mon traitement qui a besoin de 'randomizer' doit être utilisé sur un environnement de développement, je n'ai pas vraiment de contraintes de performances, mais je voulais être éclairé sur rand(), ce qui est fait...

    Parfois, et c'est mon cas, la fonction rand() peut suffir en vue des résultats escomptés

    Merci de votre contribution

  6. #6
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Citation Envoyé par Babyneedle Voir le message
    "Mieux" est suggestif.
    subjectif ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    Citation Envoyé par phili_b Voir le message
    subjectif ?
    En fait, je voulais dire "digestif"...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL SERVER 2005] problème de caractère fonction char()
    Par jibjib dans le forum Développement
    Réponses: 2
    Dernier message: 11/07/2008, 12h49
  2. [SQl SERVER 2005 Compact Edition] Fonctions utilisateurs
    Par dino86 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/04/2007, 16h00
  3. [SQL Server 2005] Fonction de partitionnement
    Par elsuket dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/04/2007, 18h39
  4. Réponses: 1
    Dernier message: 13/12/2006, 14h18
  5. [SQL SERVER 2005] Utilisation de Exec dans une fonction ?
    Par Dadou74 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/09/2006, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo