Ignore:
Timestamp:
Feb 3, 2011, 9:59:58 AM (14 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
a5028f
Parents:
5347cd
git-author:
Frederik Heber <heber@…> (01/15/11 14:38:57)
git-committer:
Frederik Heber <heber@…> (02/03/11 09:59:58)
Message:

RandomNumberGeneratorFactory does not clone anymore.

  • cloning of the generator was nonsense, as (because of same seed), we always start at same random number sequence. I.e. if we often obtain new random number generator we hardly get random numbers.
  • RandomNumberGeneratorFactory::makeRandomNumberGenerator() returns now reference to avoid accidental free'ing of the instance (that is still contained in the prototype table of the factory).
  • unit test of RandomNumberGenerator now checks for non-copy received.
  • RandomNumberGenerator()::get...Name() are now const members.
  • in many cases where pointer *rng was received and ref &random obtained from it, we now receive ref directly (and then don't accidentally forget to delete the clone anymore. Which is good in any case!).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/RandomNumbers/unittests/RandomNumberGeneratorUnitTest.cpp

    r5347cd r63839f  
    5050
    5151/** We check that the RandomNumberGenerator instance received
    52  * from the RandomNumberGeneratorFactory is truely a copy and
    53  * not the prototype instance.
     52 * from the RandomNumberGeneratorFactory is truely the prototype
     53 * itself.
    5454 */
    55 void RandomNumberGeneratorTest::PrototypeCopyTest()
     55void RandomNumberGeneratorTest::PrototypeNonCopyTest()
    5656{
    57   RandomNumberGenerator *rng1 = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
    58   RandomNumberGenerator *rng2 = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
     57  RandomNumberGenerator &rng1 = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
     58  RandomNumberGenerator &rng2 = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
    5959
    60   double random1_1 = (*rng1)();
    61   double random1_2 = (*rng1)();
    62   double random2_1 = (*rng2)();
    63   double random2_2 = (*rng2)();
    64 
    65   CPPUNIT_ASSERT(random1_1 == random2_1);
    66   CPPUNIT_ASSERT(random1_2 == random2_2);
    67 
    68   delete rng1;
    69   delete rng2;
     60  // compare addresses in memory, have to be the same
     61  CPPUNIT_ASSERT( &rng1 == &rng2 );
    7062}
    7163
     
    7466  // obtain some random values for uniform_smallint
    7567  RandomNumberGeneratorFactory::getInstance().setDistribution("uniform_smallint");
    76   RandomNumberGenerator* rng = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
     68  RandomNumberGenerator& rng = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
    7769  for (size_t i=0; i < 1000; ++i) {
    78     const int testint = (*rng)();
     70    const int testint = rng();
    7971    CPPUNIT_ASSERT_MESSAGE("randon number from uniform_smallint is out of [0:9]!", testint >= 0);
    8072    CPPUNIT_ASSERT_MESSAGE("randon number from uniform_smallint is out of [0:9]!", testint <= 9);
    8173  }
    82   delete rng;
    8374}
Note: See TracChangeset for help on using the changeset viewer.