Replace various instances of RandomVariable with RandomVariableStream

This commit is contained in:
Mitch Watrous
2012-08-20 14:25:35 -07:00
parent e931a8f423
commit da1cf74f90
22 changed files with 176 additions and 97 deletions

View File

@@ -243,15 +243,17 @@ int main (int argc, char *argv[])
// same time. This rn is added to AppStartTime to have the sources
// start at different time, however they will still send at the same rate.
UniformVariable x (0,1);
double rn = x.GetValue ();
Ptr<UniformRandomVariable> x = CreateObject<UniformRandomVariable> ();
x->SetAttribute ("Min", DoubleValue (0));
x->SetAttribute ("Max", DoubleValue (1));
double rn = x->GetValue ();
Ptr<Node> n = nodes.Get (j);
Ptr<Ipv4> ipv4 = n->GetObject<Ipv4> ();
Ipv4InterfaceAddress ipv4_int_addr = ipv4->GetAddress (1, 0);
Ipv4Address ip_addr = ipv4_int_addr.GetLocal ();
OnOffHelper onoff ("ns3::UdpSocketFactory", InetSocketAddress (ip_addr, port)); // traffic flows from node[i] to node[j]
onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
ApplicationContainer apps = onoff.Install (nodes.Get (i)); // traffic sources are installed on all nodes
apps.Start (Seconds (AppStartTime + rn));
apps.Stop (Seconds (AppStopTime));

View File

@@ -340,8 +340,8 @@ RoutingExperiment::Run (int nSinks, double txp, std::string CSVfileName)
adhocInterfaces = addressAdhoc.Assign (adhocDevices);
OnOffHelper onoff1 ("ns3::UdpSocketFactory",Address ());
onoff1.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
onoff1.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
onoff1.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff1.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
for (int i = 0; i <= nSinks - 1; i++)
{
@@ -350,9 +350,9 @@ RoutingExperiment::Run (int nSinks, double txp, std::string CSVfileName)
AddressValue remoteAddress (InetSocketAddress (adhocInterfaces.GetAddress (i), port));
onoff1.SetAttribute ("Remote", remoteAddress);
UniformVariable var;
Ptr<UniformRandomVariable> var = CreateObject<UniformRandomVariable> ();
ApplicationContainer temp = onoff1.Install (adhocNodes.Get (i + nSinks));
temp.Start (Seconds (var.GetValue (100.0,101.0)));
temp.Start (Seconds (var->GetValue (100.0,101.0)));
temp.Stop (Seconds (TotalTime));
}

View File

@@ -53,7 +53,7 @@
#include "ns3/applications-module.h"
#include "ns3/mobility-module.h"
#include "ns3/tools-module.h"
#include "ns3/random-variable.h"
#include "ns3/random-variable-stream.h"
#include "ns3/wifi-module.h"
#include "ns3/internet-module.h"
#include "ns3/flow-monitor-helper.h"
@@ -253,12 +253,16 @@ void
Experiment::SelectSrcDest (NodeContainer c)
{
uint32_t totalNodes = c.GetN ();
UniformVariable uvSrc (0, totalNodes/2 -1);
UniformVariable uvDest (totalNodes/2, totalNodes);
Ptr<UniformRandomVariable> uvSrc = CreateObject<UniformRandomVariable> ();
uvSrc->SetAttribute ("Min", DoubleValue (0));
uvSrc->SetAttribute ("Max", DoubleValue (totalNodes/2 -1));
Ptr<UniformRandomVariable> uvDest = CreateObject<UniformRandomVariable> ();
uvDest->SetAttribute ("Min", DoubleValue (totalNodes/2));
uvDest->SetAttribute ("Max", DoubleValue (totalNodes));
for (uint32_t i=0; i < totalNodes/3; i++)
{
ApplicationSetup (c.Get (uvSrc.RandomVariable::GetInteger ()), c.Get (uvDest.RandomVariable::GetInteger ()), 0, totalTime);
ApplicationSetup (c.Get (uvSrc->GetInteger ()), c.Get (uvDest->GetInteger ()), 0, totalTime);
}
}
@@ -273,21 +277,25 @@ Experiment::SendMultiDestinations (Ptr<Node> sender, NodeContainer c)
{
// UniformVariable params: (Xrange, Yrange)
UniformVariable uv (0, c.GetN ());
Ptr<UniformRandomVariable> uv = CreateObject<UniformRandomVariable> ();
uv->SetAttribute ("Min", DoubleValue (0));
uv->SetAttribute ("Max", DoubleValue (c.GetN ()));
// ExponentialVariable params: (mean, upperbound)
ExponentialVariable ev (expMean, totalTime);
Ptr<ExponentialRandomVariable> ev = CreateObject<ExponentialRandomVariable> ();
ev->SetAttribute ("Mean", DoubleValue (expMean));
ev->SetAttribute ("Bound", DoubleValue (totalTime));
double start=0.0, stop=totalTime;
uint32_t destIndex;
for (uint32_t i=0; i < c.GetN (); i++)
{
stop = start + ev.GetValue ();
stop = start + ev->GetValue ();
NS_LOG_DEBUG ("Start=" << start << " Stop=" << stop);
do {
destIndex = (uint32_t) uv.GetValue ();
destIndex = (uint32_t) uv->GetValue ();
} while ( (c.Get (destIndex))->GetId () == sender->GetId ());
ApplicationSetup (sender, c.Get (destIndex), start, stop);
@@ -420,8 +428,8 @@ Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
//Rectangle (xMin, xMax, yMin, yMax)
mobil.SetMobilityModel ("ns3::RandomDirection2dMobilityModel",
"Bounds", RectangleValue (Rectangle (0, 500, 0, 500)),
"Speed", RandomVariableValue (ConstantVariable (10)),
"Pause", RandomVariableValue (ConstantVariable (0.2)));
"Speed", StringValue ("ns3::ConstantRandomVariable[Constant=10]"),
"Pause", StringValue ("ns3::ConstantRandomVariable[Constant=0.2]"));
}
mobil.Install (c);

View File

@@ -22,7 +22,8 @@
#include "ns3/simulator.h"
#include "ns3/nstime.h"
#include "ns3/command-line.h"
#include "ns3/random-variable.h"
#include "ns3/double.h"
#include "ns3/random-variable-stream.h"
using namespace ns3;
@@ -76,11 +77,13 @@ int main (int argc, char *argv[])
cmd.Parse (argc, argv);
MyModel model;
UniformVariable v = UniformVariable (10, 20);
Ptr<UniformRandomVariable> v = CreateObject<UniformRandomVariable> ();
v->SetAttribute ("Min", DoubleValue (10));
v->SetAttribute ("Max", DoubleValue (20));
Simulator::Schedule (Seconds (10.0), &ExampleFunction, &model);
Simulator::Schedule (Seconds (v.GetValue ()), &RandomFunction);
Simulator::Schedule (Seconds (v->GetValue ()), &RandomFunction);
EventId id = Simulator::Schedule (Seconds (30.0), &CancelledEvent);
Simulator::Cancel (id);

4
src/core/examples/sample-simulator.py Normal file → Executable file
View File

@@ -44,7 +44,9 @@ def CancelledEvent():
def main(dummy_argv):
model = MyModel()
v = ns.core.UniformVariable(10,20)
v = ns.core.UniformRandomVariable()
v.SetAttribute("Min", ns.core.DoubleValue (10))
v.SetAttribute("Max", ns.core.DoubleValue (20))
ns.core.Simulator.Schedule(ns.core.Seconds(10.0), ExampleFunction, model)

View File

@@ -24,7 +24,7 @@
#include "ns3/config.h"
#include "ns3/enum.h"
#include "ns3/string.h"
#include "ns3/random-variable.h"
#include "ns3/random-variable-stream.h"
#include "ns3/double.h"
#include "ns3/object-vector.h"
#include "ns3/object-map.h"
@@ -119,9 +119,9 @@ public:
TEST_B, "TestB",
TEST_C, "TestC"))
.AddAttribute ("TestRandom", "help text",
RandomVariableValue (ConstantVariable (1.0)),
MakeRandomVariableAccessor (&AttributeObjectTest::m_random),
MakeRandomVariableChecker ())
StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"),
MakePointerAccessor (&AttributeObjectTest::m_random),
MakePointerChecker <RandomVariableStream>())
.AddAttribute ("TestFloat", "help text",
DoubleValue (-1.1),
MakeDoubleAccessor (&AttributeObjectTest::m_float),
@@ -227,7 +227,7 @@ private:
uint8_t m_uint8;
float m_float;
enum Test_e m_enum;
RandomVariable m_random;
Ptr<RandomVariableStream> m_random;
std::vector<Ptr<Derived> > m_vector1;
std::vector<Ptr<Derived> > m_vector2;
std::map <uint32_t, Ptr<Derived> > m_map1;
@@ -643,8 +643,39 @@ AttributeTestCase<EnumValue>::DoRun (void)
NS_TEST_ASSERT_MSG_EQ (ok, true, "Error in SetAttributeFailSafe() but value changes");
}
template <> void
AttributeTestCase<RandomVariableValue>::DoRun (void)
// ===========================================================================
// Test the Attributes of type RandomVariableStream.
// ===========================================================================
class RandomVariableStreamAttributeTestCase : public TestCase
{
public:
RandomVariableStreamAttributeTestCase (std::string description);
virtual ~RandomVariableStreamAttributeTestCase () {}
void InvokeCbValue (int8_t a)
{
if (!m_cbValue.IsNull ()) {
m_cbValue (a);
}
}
private:
virtual void DoRun (void);
Callback<void,int8_t> m_cbValue;
void NotifyCallbackValue (int8_t a) { m_gotCbValue = a; }
int16_t m_gotCbValue;
};
RandomVariableStreamAttributeTestCase::RandomVariableStreamAttributeTestCase (std::string description)
: TestCase (description)
{
}
void
RandomVariableStreamAttributeTestCase::DoRun (void)
{
Ptr<AttributeObjectTest> p;
bool ok;
@@ -653,16 +684,20 @@ AttributeTestCase<RandomVariableValue>::DoRun (void)
NS_TEST_ASSERT_MSG_NE (p, 0, "Unable to CreateObject");
//
// Try to set a UniformVariable
// Try to set a UniformRandomVariable
//
ok = p->SetAttributeFailSafe ("TestRandom", RandomVariableValue (UniformVariable (0., 1.)));
NS_TEST_ASSERT_MSG_EQ (ok, true, "Could not SetAttributeFailSafe() a UniformVariable");
ok = p->SetAttributeFailSafe ("TestRandom", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
NS_TEST_ASSERT_MSG_EQ (ok, true, "Could not SetAttributeFailSafe() a UniformRandomVariable");
//
// Try to set a <snicker> ConstantVariable
// Try to set a <snicker> ConstantRandomVariable
//
ok = p->SetAttributeFailSafe ("TestRandom", RandomVariableValue (ConstantVariable (10.)));
NS_TEST_ASSERT_MSG_EQ (ok, true, "Could not SetAttributeFailSafe() a UniformVariable");
// ok = p->SetAttributeFailSafe ("TestRandom", StringValue ("ns3::ConstantRandomVariable[Constant=10.0]"));
//ok = p->SetAttributeFailSafe ("TestRandom", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
ok = p->SetAttributeFailSafe ("TestRandom", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
NS_TEST_ASSERT_MSG_EQ (ok, true, "Could not SetAttributeFailSafe() a ConstantRandomVariable");
}
// ===========================================================================
@@ -1147,7 +1182,7 @@ PointerAttributeTestCase::DoRun (void)
}
// ===========================================================================
// Test the Attributes of type CallbackVale.
// Test the Attributes of type CallbackValue.
// ===========================================================================
class CallbackValueTestCase : public TestCase
{
@@ -1244,7 +1279,7 @@ AttributesTestSuite::AttributesTestSuite ()
AddTestCase (new AttributeTestCase<UintegerValue> ("Check Attributes of type UintegerValue"));
AddTestCase (new AttributeTestCase<DoubleValue> ("Check Attributes of type DoubleValue"));
AddTestCase (new AttributeTestCase<EnumValue> ("Check Attributes of type EnumValue"));
AddTestCase (new AttributeTestCase<RandomVariableValue> ("Check Attributes of type RandomVariableValue"));
AddTestCase (new RandomVariableStreamAttributeTestCase ("Check Attributes of type RandomVariableStream"));
AddTestCase (new ObjectVectorAttributeTestCase ("Check Attributes of type ObjectVectorValue"));
AddTestCase (new ObjectMapAttributeTestCase ("Check Attributes of type ObjectMapValue"));
AddTestCase (new IntegerTraceSourceAttributeTestCase ("Ensure TracedValue<uint8_t> can be set like IntegerValue"));

View File

@@ -247,12 +247,17 @@ DsdvManetExample::SetupMobility ()
MobilityHelper mobility;
ObjectFactory pos;
pos.SetTypeId ("ns3::RandomRectanglePositionAllocator");
pos.Set ("X", RandomVariableValue (UniformVariable (0, 1000)));
pos.Set ("Y", RandomVariableValue (UniformVariable (0, 1000)));
pos.Set ("X", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
pos.Set ("Y", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=1000.0]"));
ostringstream speedConstantRandomVariableStream;
speedConstantRandomVariableStream << "ns3::ConstantRandomVariable[Constant="
<< m_nodeSpeed
<< "]";
Ptr <PositionAllocator> taPositionAlloc = pos.Create ()->GetObject <PositionAllocator> ();
mobility.SetMobilityModel ("ns3::RandomWaypointMobilityModel", "Speed", RandomVariableValue (ConstantVariable (m_nodeSpeed)),
"Pause", RandomVariableValue (ConstantVariable (2.0)), "PositionAllocator", PointerValue (taPositionAlloc));
mobility.SetMobilityModel ("ns3::RandomWaypointMobilityModel", "Speed", StringValue (speedConstantRandomVariableStream.str ()),
"Pause", StringValue ("ns3::ConstantRandomVariable[Constant=2.0]"), "PositionAllocator", PointerValue (taPositionAlloc));
mobility.SetPositionAllocator (taPositionAlloc);
mobility.Install (nodes);
}
@@ -312,14 +317,14 @@ DsdvManetExample::InstallApplications ()
for (uint32_t j = 0; j <= m_nSinks - 1; j++ )
{
OnOffHelper onoff1 ("ns3::UdpSocketFactory", Address (InetSocketAddress (interfaces.GetAddress (j), port)));
onoff1.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
onoff1.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
onoff1.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff1.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
if (j != clientNode)
{
ApplicationContainer apps1 = onoff1.Install (nodes.Get (clientNode));
UniformVariable var;
apps1.Start (Seconds (var.GetValue (m_dataStart, m_dataStart + 1)));
Ptr<UniformRandomVariable> var = CreateObject<UniformRandomVariable> ();
apps1.Start (Seconds (var->GetValue (m_dataStart, m_dataStart + 1)));
apps1.Stop (Seconds (m_totalTime));
}
}

View File

@@ -37,6 +37,7 @@
#include "ns3/wifi-module.h"
#include "ns3/internet-module.h"
#include "ns3/dsr-module.h"
#include <sstream>
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("DsrTest");
@@ -142,13 +143,24 @@ main (int argc, char *argv[])
MobilityHelper adhocMobility;
ObjectFactory pos;
pos.SetTypeId ("ns3::RandomRectanglePositionAllocator");
pos.Set ("X", RandomVariableValue (UniformVariable (0.0, 300.0)));
pos.Set ("Y", RandomVariableValue (UniformVariable (0.0, 1500.0)));
pos.Set ("X", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=300.0]"));
pos.Set ("Y", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=1500.0]"));
Ptr<PositionAllocator> taPositionAlloc = pos.Create ()->GetObject<PositionAllocator> ();
ostringstream speedUniformRandomVariableStream;
speedUniformRandomVariableStream << "ns3::UniformRandomVariable[Min=0.0|Max="
<< nodeSpeed
<< "]";
ostringstream pauseConstantRandomVariableStream;
pauseConstantRandomVariableStream << "ns3::ConstantRandomVariable[Constant="
<< pauseTime
<< "]";
adhocMobility.SetMobilityModel ("ns3::RandomWaypointMobilityModel",
"Speed", RandomVariableValue (UniformVariable (0.0, nodeSpeed)),
"Pause", RandomVariableValue (ConstantVariable (pauseTime)),
// "Speed", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=nodeSpeed]"),
"Speed", StringValue (speedUniformRandomVariableStream.str ()),
"Pause", StringValue (pauseConstantRandomVariableStream.str ()),
"PositionAllocator", PointerValue (taPositionAlloc)
);
adhocMobility.Install (adhocNodes);
@@ -176,8 +188,8 @@ main (int argc, char *argv[])
apps_sink.Stop (Seconds (TotalTime));
OnOffHelper onoff1 ("ns3::UdpSocketFactory", Address (InetSocketAddress (allInterfaces.GetAddress (i), port)));
onoff1.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
onoff1.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
onoff1.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff1.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
onoff1.SetAttribute ("PacketSize", UintegerValue (packetSize));
onoff1.SetAttribute ("DataRate", DataRateValue (DataRate (rate)));

View File

@@ -102,8 +102,9 @@ def main(argv):
#print i, destaddr
onOffHelper.SetAttribute("Remote", ns.network.AddressValue(ns.network.InetSocketAddress(destaddr, port)))
app = onOffHelper.Install(ns.network.NodeContainer(node))
app.Start(ns.core.Seconds(ns.core.UniformVariable(20, 30).GetValue()))
urv = ns.core.UniformRandomVariable()
app.Start(ns.core.Seconds(urv.GetValue(20, 30)))
#internet.EnablePcapAll("wifi-olsr")
flowmon_helper = ns.flow_monitor.FlowMonitorHelper()
#flowmon_helper.SetMonitorAttribute("StartTime", ns.core.TimeValue(ns.core.Seconds(31)))

View File

@@ -116,14 +116,16 @@ main (int argc, char *argv[])
// Position of UEs attached to eNB
for (uint32_t i = 0; i < nEnb; i++)
{
UniformVariable posX (enbPosition.at(i).x - roomLength * 0.5,
enbPosition.at(i).x + roomLength * 0.5);
UniformVariable posY (enbPosition.at(i).y - roomLength * 0.5,
enbPosition.at(i).y + roomLength * 0.5);
Ptr<UniformRandomVariable> posX = CreateObject<UniformRandomVariable> ();
posX->SetAttribute ("Min", DoubleValue (enbPosition.at(i).x - roomLength * 0.5));
posX->SetAttribute ("Max", DoubleValue (enbPosition.at(i).x + roomLength * 0.5));
Ptr<UniformRandomVariable> posY = CreateObject<UniformRandomVariable> ();
posY->SetAttribute ("Min", DoubleValue (enbPosition.at(i).y - roomLength * 0.5));
posY->SetAttribute ("Max", DoubleValue (enbPosition.at(i).y + roomLength * 0.5));
positionAlloc = CreateObject<ListPositionAllocator> ();
for (uint32_t j = 0; j < nUe; j++)
{
positionAlloc->Add (Vector (posX.GetValue (), posY.GetValue (), nodeHeight));
positionAlloc->Add (Vector (posX->GetValue (), posY->GetValue (), nodeHeight));
mobility.SetPositionAllocator (positionAlloc);
}
mobility.Install (ueNodes.at(i));

View File

@@ -131,10 +131,12 @@ main (int argc, char *argv[])
// Position of UEs attached to eNB
for (uint32_t i = 0; i < nEnb; i++)
{
UniformVariable posX (enbPosition.at(i).x - roomLength * 0,
enbPosition.at(i).x + roomLength * 0);
UniformVariable posY (enbPosition.at(i).y - roomLength * 0,
enbPosition.at(i).y + roomLength * 0);
Ptr<UniformRandomVariable> posX = CreateObject<UniformRandomVariable> ();
posX->SetAttribute ("Min", DoubleValue (enbPosition.at(i).x - roomLength * 0));
posX->SetAttribute ("Max", DoubleValue (enbPosition.at(i).x + roomLength * 0));
Ptr<UniformRandomVariable> posY = CreateObject<UniformRandomVariable> ();
posY->SetAttribute ("Min", DoubleValue (enbPosition.at(i).y - roomLength * 0));
posY->SetAttribute ("Max", DoubleValue (enbPosition.at(i).y + roomLength * 0));
positionAlloc = CreateObject<ListPositionAllocator> ();
for (uint32_t j = 0; j < nUe; j++)
{
@@ -152,7 +154,7 @@ main (int argc, char *argv[])
}
else
{
positionAlloc->Add (Vector (posX.GetValue (), posY.GetValue (), nodeHeight));
positionAlloc->Add (Vector (posX->GetValue (), posY->GetValue (), nodeHeight));
}
mobility.SetPositionAllocator (positionAlloc);
}

View File

@@ -441,7 +441,7 @@ main (int argc, char *argv[])
}
else
{
UniformVariable urng;
Ptr<UniformRandomVariable> urng = CreateObject<UniformRandomVariable> ();
int r1;
double r2;
for (uint32_t z = 0; z < nCN; ++z)
@@ -483,8 +483,8 @@ main (int argc, char *argv[])
// Sources
if (systemCount == 1)
{
r1 = 2 + (int)(4 * urng.GetValue ());
r2 = 10 * urng.GetValue ();
r1 = 2 + (int)(4 * urng->GetValue ());
r2 = 10 * urng->GetValue ();
OnOffHelper client ("ns3::UdpSocketFactory", Address ());
AddressValue remoteAddress
@@ -497,8 +497,8 @@ main (int argc, char *argv[])
}
else if (systemId == x % systemCount)
{
r1 = 2 + (int)(4 * urng.GetValue ());
r2 = 10 * urng.GetValue ();
r1 = 2 + (int)(4 * urng->GetValue ());
r2 = 10 * urng->GetValue ();
OnOffHelper client ("ns3::UdpSocketFactory", Address ());
AddressValue remoteAddress
@@ -543,8 +543,8 @@ main (int argc, char *argv[])
// Sources
if (systemCount == 1)
{
r1 = 2 + (int)(4 * urng.GetValue ());
r2 = 10 * urng.GetValue ();
r1 = 2 + (int)(4 * urng->GetValue ());
r2 = 10 * urng->GetValue ();
OnOffHelper client ("ns3::UdpSocketFactory", Address ());
AddressValue remoteAddress
@@ -557,8 +557,8 @@ main (int argc, char *argv[])
}
else if (systemId == x % systemCount)
{
r1 = 2 + (int)(4 * urng.GetValue ());
r2 = 10 * urng.GetValue ();
r1 = 2 + (int)(4 * urng->GetValue ());
r2 = 10 * urng->GetValue ();
OnOffHelper client ("ns3::UdpSocketFactory", Address ());
AddressValue remoteAddress

View File

@@ -133,9 +133,9 @@ int main (int argc, char *argv[])
// Install on/off app on all right side nodes
OnOffHelper clientHelper ("ns3::UdpSocketFactory", Address ());
clientHelper.SetAttribute
("OnTime", RandomVariableValue (UniformVariable (0, 1)));
("OnTime", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
clientHelper.SetAttribute
("OffTime", RandomVariableValue (UniformVariable (0, 1)));
("OffTime", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
ApplicationContainer clientApps;
for (uint32_t i = 0; i < d.RightCount (); ++i)

View File

@@ -99,11 +99,13 @@ NetAnimExperiment::UpdatePositions (NodeContainer &nodes)
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << " Updating positions");
NodeContainer::Iterator it = nodes.Begin ();
UniformVariable uv (0, m_boundary);
Ptr<UniformRandomVariable> uv = CreateObject<UniformRandomVariable> ();
uv->SetAttribute ("Min", DoubleValue (0.0));
uv->SetAttribute ("Max", DoubleValue (m_boundary));
for (; it != nodes.End (); it++)
{
Ptr<MobilityModel> mp = (*it)->GetObject<MobilityModel> ();
mp->SetPosition (Vector (uv.GetValue (), uv.GetValue (), 70.0));
mp->SetPosition (Vector (uv->GetValue (), uv->GetValue (), 70.0));
}
}
@@ -147,15 +149,17 @@ NetAnimExperiment::Run (UanHelper &uan)
Ptr<ListPositionAllocator> pos = CreateObject<ListPositionAllocator> ();
{
UniformVariable urv (0, m_boundary);
Ptr<UniformRandomVariable> urv = CreateObject<UniformRandomVariable> ();
urv->SetAttribute ("Min", DoubleValue (0.0));
urv->SetAttribute ("Max", DoubleValue (m_boundary));
pos->Add (Vector (m_boundary / 2.0, m_boundary / 2.0, m_depth));
double rsum = 0;
double minr = 2 * m_boundary;
for (uint32_t i = 0; i < m_numNodes; i++)
{
double x = urv.GetValue ();
double y = urv.GetValue ();
double x = urv->GetValue ();
double y = urv->GetValue ();
double newr = sqrt ((x - m_boundary / 2.0) * (x - m_boundary / 2.0)
+ (y - m_boundary / 2.0) * (y - m_boundary / 2.0));
rsum += newr;
@@ -179,8 +183,8 @@ NetAnimExperiment::Run (UanHelper &uan)
socket.SetProtocol (0);
OnOffHelper app ("ns3::PacketSocketFactory", Address (socket));
app.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
app.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
app.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
app.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
app.SetAttribute ("DataRate", DataRateValue (m_dataRate));
app.SetAttribute ("PacketSize", UintegerValue (m_packetSize));

View File

@@ -116,8 +116,8 @@ int main (int argc, char *argv[])
// Install on/off app on all right side nodes
OnOffHelper clientHelper ("ns3::TcpSocketFactory", Address ());
clientHelper.SetAttribute ("OnTime", RandomVariableValue (UniformVariable (0, 1)));
clientHelper.SetAttribute ("OffTime", RandomVariableValue (UniformVariable (0, 1)));
clientHelper.SetAttribute ("OnTime", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
clientHelper.SetAttribute ("OffTime", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
Address sinkLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));
PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", sinkLocalAddress);
ApplicationContainer sinkApps;

View File

@@ -24,7 +24,6 @@
#include "application.h"
#include "ns3/node.h"
#include "ns3/nstime.h"
#include "ns3/random-variable.h"
#include "ns3/simulator.h"
using namespace std;

View File

@@ -1,5 +1,6 @@
#include "ns3/buffer.h"
#include "ns3/random-variable.h"
#include "ns3/random-variable-stream.h"
#include "ns3/double.h"
#include "ns3/test.h"
namespace ns3 {
@@ -247,7 +248,9 @@ BufferTest::DoRun (void)
{
const uint32_t actualSize = 72602;
const uint32_t chunkSize = 67624;
UniformVariable bytesRng (0, 256);
Ptr<UniformRandomVariable> bytesRng = CreateObject<UniformRandomVariable> ();
bytesRng->SetAttribute ("Min", DoubleValue (0));
bytesRng->SetAttribute ("Max", DoubleValue (256));
Buffer inputBuffer;
Buffer outputBuffer;
@@ -256,7 +259,7 @@ BufferTest::DoRun (void)
{
Buffer::Iterator iter = inputBuffer.Begin ();
for (uint32_t i = 0; i < actualSize; i++)
iter.WriteU8 (static_cast<uint8_t> (bytesRng.GetValue ()));
iter.WriteU8 (static_cast<uint8_t> (bytesRng->GetValue ()));
}
outputBuffer.AddAtEnd (chunkSize);

View File

@@ -59,7 +59,6 @@
#include "ns3/packet.h"
#include "ns3/assert.h"
#include "ns3/log.h"
#include "ns3/random-variable.h"
#include "ns3/boolean.h"
#include "ns3/enum.h"
#include "ns3/double.h"

View File

@@ -435,9 +435,9 @@ main (int argc, char *argv[])
cout << "Creating TCP Traffic Flows:" << endl;
Config::SetDefault ("ns3::OnOffApplication::MaxBytes", UintegerValue (500000));
Config::SetDefault ("ns3::OnOffApplication::OnTime",
RandomVariableValue (ConstantVariable (1)));
StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
Config::SetDefault ("ns3::OnOffApplication::OffTime",
RandomVariableValue (ConstantVariable (0)));
StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (512));
UniformVariable urng;

View File

@@ -29,7 +29,6 @@
#include "ns3/data-rate.h"
#include "ns3/inet-socket-address.h"
#include "ns3/packet-sink.h"
#include "ns3/random-variable.h"
#include "ns3/wifi-helper.h"
#include "ns3/qos-wifi-mac-helper.h"

View File

@@ -152,9 +152,11 @@ int main (int argc, char *argv[])
uint32_t totalNodes = nodes.GetN ();
UniformVariable unifRandom (0, totalNodes - 1);
Ptr<UniformRandomVariable> unifRandom = CreateObject<UniformRandomVariable> ();
unifRandom->SetAttribute ("Min", DoubleValue (0));
unifRandom->SetAttribute ("Max", DoubleValue (totalNodes - 1));
unsigned int randomServerNumber = unifRandom.GetInteger (0, totalNodes - 1);
unsigned int randomServerNumber = unifRandom->GetInteger (0, totalNodes - 1);
Ptr<Node> randomServerNode = nodes.Get (randomServerNumber);
Ptr<Ipv4> ipv4Server = randomServerNode->GetObject<Ipv4> ();
@@ -168,8 +170,8 @@ int main (int argc, char *argv[])
InetSocketAddress dst = InetSocketAddress ( ipv4AddrServer );
OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1.0)));
onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0.0)));
onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
onoff.SetAttribute ("DataRate", DataRateValue (DataRate (15000)));
onoff.SetAttribute ("PacketSize", UintegerValue (1200));

View File

@@ -71,7 +71,7 @@ class Tunnel
Ipv4Address m_n3Address;
Ipv4Address m_n0Address;
Ipv4Address m_n1Address;
UniformVariable m_rng;
Ptr<UniformRandomVariable> m_rng;
Ptr<VirtualNetDevice> m_n0Tap;
Ptr<VirtualNetDevice> m_n1Tap;
Ptr<VirtualNetDevice> m_n3Tap;
@@ -96,7 +96,7 @@ class Tunnel
bool
N3VirtualSend (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
{
if (m_rng.GetValue () < 0.25)
if (m_rng->GetValue () < 0.25)
{
NS_LOG_DEBUG ("Send to " << m_n0Address << ": " << *packet);
m_n3Socket->SendTo (packet, 0, InetSocketAddress (m_n0Address, 667));
@@ -142,6 +142,7 @@ public:
Ipv4Address n3Addr, Ipv4Address n0Addr, Ipv4Address n1Addr)
: m_n3Address (n3Addr), m_n0Address (n0Addr), m_n1Address (n1Addr)
{
m_rng = CreateObject<UniformRandomVariable> ();
m_n3Socket = Socket::CreateSocket (n3, TypeId::LookupByName ("ns3::UdpSocketFactory"));
m_n3Socket->Bind (InetSocketAddress (Ipv4Address::GetAny (), 667));
m_n3Socket->SetRecvCallback (MakeCallback (&Tunnel::N3SocketRecv, this));