2017-09-27 6 views
0

je définir le trafic hôte intervalle d'envoi de cette façon dans mon dossier NED et j'attends à recevoir un nombre différent dans chaque exécution:cant générer un nombre aléatoire dans omnetpp

volatile double sendInterval @unit("s") = default(exponential(1s)); 

mais il me donne même résultat dans chaque exécution , où est le problème?

Répondre

2

Il n'y a pas de problème ici. C'est une caractéristique. Tout numéro aléatoire dans OMNeT ++ est en fait un numéro pseudo-aléatoire . Et ils vraiment doivent être déterministes, de sorte que chaque expérience peut être exactement reproduit.

Voir la section du manuel: https://omnetpp.org/doc/omnetpp/manual/#sec:sim-lib:random-number-generators

Où il est dit:

A partir de la même graine, RNG produisent toujours la même séquence de nombres aléatoires. C'est une propriété utile et d'une grande importance, car elle rend la simulation répétable.

Pour obtenir des valeurs différentes, essayez de définir une seed-set différent pour votre configuration dans le fichier .ini, ou l'exécution de plusieurs répétitions en réglant l'option repeat - chaque répétition définit automatiquement une graine différente pour les PRNGs.

Voir aussi: https://omnetpp.org/doc/omnetpp/manual/#sec:config-sim:repeating-runs-with-different-seeds

+0

J'ai besoin d'exécuter ma simulation 500 fois à l'aide Cmdenv, chacun avec des valeurs différentes, j'utilise des graines avec répétition réglée sur 500, mais l'intervalle d'envoi est restant la même dans tous répétition , que devrais-je faire? – leo

+1

L'ajout de 'repeat' seul rendra toutes les graines différentes. En définissant également l'option 'seed-set', vous écrasez ceci et définissez la même valeur pour toutes les exécutions. – torokati44

+0

cela fonctionne merci beaucoup – leo