コード例 #1
0
        public ElectronicsGenerator(Random rand)
        {
            _rand = rand;

            _isPurchaser = new[] {
                new DistributionValue<bool>(true, 0.5),
                new DistributionValue<bool>(false, 1)
            };

            _purchases = new[] {
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.Television, 1d/8*1),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.HomeTheatre, 1d/8*2),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.MusicSystem, 1d/8*3),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.Computer, 1d/8*4),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.Dishwasher, 1d/8*5),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.Fridge, 1d/8*6),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.WashingMachine, 1d/8*7),
                new DistributionValue<ElectronicPurchase>(ElectronicPurchase.VacuumCleaner, 1)
            };

            _numberOfPurchases = new[] {
                new DistributionValue<int>(1, 0.5),
                new DistributionValue<int>(2, 0.75),
                new DistributionValue<int>(3, 0.875),
                new DistributionValue<int>(4, 0.9375),
                new DistributionValue<int>(5, 0.96875),
                new DistributionValue<int>(6, 0.984375),
                new DistributionValue<int>(7, 0.992188),
                new DistributionValue<int>(8, 1),
            };
        }
コード例 #2
0
        public PropertyGenerator(Random rand)
        {
            _rand = rand;

            _isOwner = new[] {
                new DistributionValue<bool>(true, 0.5),
                new DistributionValue<bool>(false, 1)
            };

            _isUpgrade = new[] {
                new DistributionValue<bool>(true, 0.5),
                new DistributionValue<bool>(false, 1)
            };

            _upgrades = new[] {
                new DistributionValue<PropertyUpgrade>(PropertyUpgrade.Kitchen, 1d/6*1),
                new DistributionValue<PropertyUpgrade>(PropertyUpgrade.Bathroom, 1d/6*2),
                new DistributionValue<PropertyUpgrade>(PropertyUpgrade.Bedroom, 1d/6*3),
                new DistributionValue<PropertyUpgrade>(PropertyUpgrade.LivingRoom, 1d/6*4),
                new DistributionValue<PropertyUpgrade>(PropertyUpgrade.Garden, 1d/6*5),
                new DistributionValue<PropertyUpgrade>(PropertyUpgrade.Pool, 1),
            };

            _numberOfUpgrades = new[] {
                new DistributionValue<int>(1, 0.5),
                new DistributionValue<int>(2, 0.75),
                new DistributionValue<int>(3, 0.875),
                new DistributionValue<int>(4, 0.9375),
                new DistributionValue<int>(5, 0.96875),
                new DistributionValue<int>(6, 1),
            };
        }
コード例 #3
0
        public AddressGenerator(Random rand)
        {
            _rand = rand;

            _countries = new[] {
                new DistributionValue<string>("New Zealand", 0.01),
                new DistributionValue<string>("England", 0.03),
                new DistributionValue<string>("Australia", 1)
            };

            _auStates = new[] {
                new DistributionValue<string>("NT", 0.01),
                new DistributionValue<string>("ACT", 0.02),
                new DistributionValue<string>("TAS", 0.03),
                new DistributionValue<string>("SA", 0.07),
                new DistributionValue<string>("WA", 0.12),
                new DistributionValue<string>("VIC", 0.24),
                new DistributionValue<string>("NSW", 0.40),
                new DistributionValue<string>("QLD", 1),
            };

            _unitNumbers = new[] {
                new DistributionValue<Tuple<int, int>>(Tuple.Create(1, 6), 0.5),
                new DistributionValue<Tuple<int, int>>(Tuple.Create(7, 12), 0.75),
                new DistributionValue<Tuple<int, int>>(Tuple.Create(13, 18), 0.9),
                new DistributionValue<Tuple<int, int>>(Tuple.Create(19, 24), 1)
            };
        }
コード例 #4
0
 public GenderGenerator(Random rand)
 {
     _rand = rand;
     _genders = new[] {
         new DistributionValue<Gender>(Gender.Male, 0.44),
         new DistributionValue<Gender>(Gender.Female, 1)
     };
 }
コード例 #5
0
ファイル: NameGenerator.cs プロジェクト: avinmathew/gus-gives
 private string GetRandomName(DistributionValue<string>[] values)
 {
     double rnd = _rand.NextDouble() * values[values.Length - 1].Distribution;
     for (int i = 0; i < _lastNames.Length; i++)
     {
         if (rnd < values[i].Distribution)
             return values[i].Value;
     }
     throw new InvalidOperationException();
 }
コード例 #6
0
        public AdultGenerator(Random rand)
        {
            _rand = rand;

            _occupations = new[] {
                new DistributionValue<AdultOccupations>(AdultOccupations.WorkingFullTime, 0.4),
                new DistributionValue<AdultOccupations>(AdultOccupations.WorkingPartTime, 0.7),
                new DistributionValue<AdultOccupations>(AdultOccupations.Retired, 0.75),
                new DistributionValue<AdultOccupations>(AdultOccupations.Unemployed, 0.85),
                new DistributionValue<AdultOccupations>(AdultOccupations.Student, 1)
            };
        }
コード例 #7
0
        public void MergeFrom(MetricValue other)
        {
            if (other == null)
            {
                return;
            }
            labels_.Add(other.labels_);
            if (other.startTime_ != null)
            {
                if (startTime_ == null)
                {
                    StartTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
                }
                StartTime.MergeFrom(other.StartTime);
            }
            if (other.endTime_ != null)
            {
                if (endTime_ == null)
                {
                    EndTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
                }
                EndTime.MergeFrom(other.EndTime);
            }
            switch (other.ValueCase)
            {
            case ValueOneofCase.BoolValue:
                BoolValue = other.BoolValue;
                break;

            case ValueOneofCase.Int64Value:
                Int64Value = other.Int64Value;
                break;

            case ValueOneofCase.DoubleValue:
                DoubleValue = other.DoubleValue;
                break;

            case ValueOneofCase.StringValue:
                StringValue = other.StringValue;
                break;

            case ValueOneofCase.DistributionValue:
                if (DistributionValue == null)
                {
                    DistributionValue = new global::Google.Cloud.ServiceControl.V1.Distribution();
                }
                DistributionValue.MergeFrom(other.DistributionValue);
                break;
            }

            _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }
コード例 #8
0
        public MembershipStatusGenerator(Random rand)
        {
            _rand = rand;

            _status = new[] {
                new DistributionValue<MembershipStatus>(MembershipStatus.Free, 0.5),
                new DistributionValue<MembershipStatus>(MembershipStatus.Paying, 1)
            };

            _extras = new[] {
                new DistributionValue<OptionalExtras>(OptionalExtras.Yes, 0.5),
                new DistributionValue<OptionalExtras>(OptionalExtras.No, 1)
            };
        }
コード例 #9
0
 public double this[int index]
 {
     get
     {
         if (IsDistribution)
         {
             return(DistributionValue.GetResult()[index]);
         }
         else
         {
             //return ScalarValue;
             // Temp test code
             return(vectorOfScalars[index]);
         }
     }
 }
コード例 #10
0
        public IncomeGenerator(Random rand)
        {
            _rand = rand;

            _ranges = new[] {
                new DistributionValue<string>("<25,000", 0.143),
                new DistributionValue<string>("25,001-40,000", 0.308),
                new DistributionValue<string>("40,001-55,000", 0.421),
                new DistributionValue<string>("55,001-70,000", 0.488),
                new DistributionValue<string>("70,001-85,000", 0.583),
                new DistributionValue<string>("85,001-100,000", 0.667),
                new DistributionValue<string>("100,001-120,000", 0.780),
                new DistributionValue<string>("120,001-140,000", 0.813),
                new DistributionValue<string>("140,001+", 1)
            };
        }
コード例 #11
0
        public HouseholdGenerator(Random rand)
        {
            _rand = rand;

            _adults = new[] {
                new DistributionValue<int>(1, 0.3),
                new DistributionValue<int>(2, 0.85),
                new DistributionValue<int>(3, 0.95),
                new DistributionValue<int>(3, 1)
            };

            _minors = new[] {
                new DistributionValue<int>(0, 0.4),
                new DistributionValue<int>(1, 0.7),
                new DistributionValue<int>(2, 0.9),
                new DistributionValue<int>(3, 1)
            };
        }
コード例 #12
0
ファイル: KControl.cs プロジェクト: luca-cardelli/KaemikaXM
        public static void AddParameter(string parameter, double drawn, DistributionValue distribution, Style style)
        {
            lock (parameterLock) {
                if (!parameterInfoDict.ContainsKey(parameter))
                {
                    parameterInfoDict[parameter]  = new ParameterInfo(parameter, drawn, distribution, style);
                    parameterStateDict[parameter] = new ParameterState(parameter, parameterInfoDict[parameter]);
                }
            }
            parameterStateDict[parameter] = new ParameterState(parameter, parameterInfoDict[parameter]); // use the old value, not the one from drawn
            if (parameterInfoDict.ContainsKey(parameter) && parameterInfoDict[parameter].locked)
            {
                return;                                                                                  // do not change the old value if locked
            }
            ParameterInfo  info  = new ParameterInfo(parameter, drawn, distribution, style);             // use the new value, from drawn
            ParameterState state = new ParameterState(parameter, info);                                  // update the value

            parameterInfoDict[parameter]  = info;
            parameterStateDict[parameter] = state;
        }
コード例 #13
0
        public override int GetHashCode()
        {
            int hash = 1;

            hash ^= Labels.GetHashCode();
            if (startTime_ != null)
            {
                hash ^= StartTime.GetHashCode();
            }
            if (endTime_ != null)
            {
                hash ^= EndTime.GetHashCode();
            }
            if (valueCase_ == ValueOneofCase.BoolValue)
            {
                hash ^= BoolValue.GetHashCode();
            }
            if (valueCase_ == ValueOneofCase.Int64Value)
            {
                hash ^= Int64Value.GetHashCode();
            }
            if (valueCase_ == ValueOneofCase.DoubleValue)
            {
                hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(DoubleValue);
            }
            if (valueCase_ == ValueOneofCase.StringValue)
            {
                hash ^= StringValue.GetHashCode();
            }
            if (valueCase_ == ValueOneofCase.DistributionValue)
            {
                hash ^= DistributionValue.GetHashCode();
            }
            hash ^= (int)valueCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
コード例 #14
0
ファイル: AgeGenerator.cs プロジェクト: avinmathew/gus-gives
        public AgeGenerator(Random rand)
        {
            _rand = rand;

            _femaleAges = new[] {
                new DistributionValue<Age>(Age.Range1, 0.2),
                new DistributionValue<Age>(Age.Range2, 0.3),
                new DistributionValue<Age>(Age.Range3, 0.5),
                new DistributionValue<Age>(Age.Range4, 0.7),
                new DistributionValue<Age>(Age.Range5, 0.8),
                new DistributionValue<Age>(Age.Range6, 1)
            };

            _maleAges = new[] {
                new DistributionValue<Age>(Age.Range1, 0.2),
                new DistributionValue<Age>(Age.Range2, 0.3),
                new DistributionValue<Age>(Age.Range3, 0.5),
                new DistributionValue<Age>(Age.Range4, 0.7),
                new DistributionValue<Age>(Age.Range5, 0.8),
                new DistributionValue<Age>(Age.Range6, 1)
            };
        }
コード例 #15
0
        public EmailGenerator(Random rand)
        {
            _rand = rand;

            _auEmails = new[] {
                new DistributionValue<string>("yahoo.com", 0.15),
                new DistributionValue<string>("yahoo.com.au", 0.25),
                new DistributionValue<string>("hotmail.com", 0.5),
                new DistributionValue<string>("gmail.com", 0.65),
                new DistributionValue<string>("bigpond.net", 0.75),
                new DistributionValue<string>("iinet.net.au", 0.85),
                new DistributionValue<string>("optusnet.net.au", 0.93),
                new DistributionValue<string>("tpg.com.au", 0.97),
                new DistributionValue<string>("internode.on.net", 1),
            };

            _otherEmails = new[] {
                new DistributionValue<string>("yahoo.com", 0.38),
                new DistributionValue<string>("hotmail.com", 0.76),
                new DistributionValue<string>("gmail.com", 1),
            };
        }
コード例 #16
0
ファイル: Netlist.cs プロジェクト: luca-cardelli/KaemikaXM
 public ParameterEntry(Symbol symbol, Type type, NumberValue value, DistributionValue distribution) : base(symbol, type, value)
 {
     this.distribution = distribution;
 }
コード例 #17
0
ファイル: Netlist.cs プロジェクト: luca-cardelli/KaemikaXM
 public RandomEntry(Symbol symbol, DistributionValue value)
 {
     this.symbol = symbol;
     this.value  = value;
 }
コード例 #18
0
ファイル: NameGenerator.cs プロジェクト: avinmathew/gus-gives
 public void Load(string lastNameFile, string femaleNameFile, string maleNameFile)
 {
     _lastNames = ReadFile(lastNameFile);
     _femaleNames = ReadFile(femaleNameFile);
     _maleNames = ReadFile(maleNameFile);
 }
コード例 #19
0
ファイル: NameGenerator.cs プロジェクト: avinmathew/gus-gives
 private DistributionValue<string>[] ReadFile(string nameFile)
 {
     List<DistributionValue<string>> values = new List<DistributionValue<string>>();
     using (TextReader reader = File.OpenText(nameFile))
     {
         string line;
         while ((line = reader.ReadLine()) != null)
         {
             string[] split = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
             DistributionValue<string> value = new DistributionValue<string>(split[0], double.Parse(split[2]));
             values.Add(value);
         }
     }
     return values.ToArray();
 }