C# 클래스 StopGuessing.DataStructures.DecayingDouble

A class that represents a double that decays over time using a half life, to borrow a concept from radioactive decay. A value that is assigned a value 1d and a half life of one day will have value 0.5d after one day, .25d after two days, and so on. More generally, if you assign the value x, after e half lives it's value will be x/(2^e). Since a double that decays with time will have a constantly-changing real value, it should never be used as the key into a Dictionary or kept in a HashSet. It should not be compared for exact equality.
파일 보기 프로젝트 열기: Microsoft/StopGuessing 1 사용 예제들

공개 메소드들

메소드 설명
Add ( System.TimeSpan halfLife, DecayingDouble amountToAdd ) : DecayingDouble
Add ( double amountToAdd, System.TimeSpan halfLife, System.DateTime timeOfAddOperationUtc = null ) : void

In-place addition

AddInPlace ( System.TimeSpan halfLife, DecayingDouble amountToAdd ) : void
AddInPlace ( System.TimeSpan halfLife, double amountToAdd, System.DateTime whenToAddIt ) : void
Decay ( double valueLastSetTo, System.TimeSpan halfLife, System.DateTime whenLastSetUtc, System.DateTime timeToDecayTo = null ) : double
DecayingDouble ( double initialValue = 0d, System.DateTime initialLastUpdateUtc = null ) : System

A double that decays with time

GetValue ( System.TimeSpan halfLife, System.DateTime whenUtc = null ) : double

Get the value of the double at a given instant in time. If using the current system time, the preferred way to get the value is not to call this method but to simply access the Value field.

SetValue ( DecayingDouble source ) : void
SetValue ( double newValue, System.DateTime whenUtc = null ) : void

Set the value at a point in time. If setting using the current system time, the preferred approach is to simply set the Value field.

Subtract ( System.TimeSpan halfLife, DecayingDouble amountToRemove ) : DecayingDouble
SubtractInPlace ( System.TimeSpan halfLife, DecayingDouble amountToSubtract ) : void
SubtractInPlace ( System.TimeSpan halfLife, double amountToSubtract, System.DateTime whenToSubtractIt ) : void

메소드 상세

Add() 공개 메소드

public Add ( System.TimeSpan halfLife, DecayingDouble amountToAdd ) : DecayingDouble
halfLife System.TimeSpan
amountToAdd DecayingDouble
리턴 DecayingDouble

Add() 공개 메소드

In-place addition
public Add ( double amountToAdd, System.TimeSpan halfLife, System.DateTime timeOfAddOperationUtc = null ) : void
amountToAdd double The amount to add to the existing value.
halfLife System.TimeSpan The half life to use when determining the existing value.
timeOfAddOperationUtc System.DateTime When to add it, in UTC time (if NULL, sets it to the current clock time)
리턴 void

AddInPlace() 공개 메소드

public AddInPlace ( System.TimeSpan halfLife, DecayingDouble amountToAdd ) : void
halfLife System.TimeSpan
amountToAdd DecayingDouble
리턴 void

AddInPlace() 공개 메소드

public AddInPlace ( System.TimeSpan halfLife, double amountToAdd, System.DateTime whenToAddIt ) : void
halfLife System.TimeSpan
amountToAdd double
whenToAddIt System.DateTime
리턴 void

Decay() 공개 정적인 메소드

public static Decay ( double valueLastSetTo, System.TimeSpan halfLife, System.DateTime whenLastSetUtc, System.DateTime timeToDecayTo = null ) : double
valueLastSetTo double
halfLife System.TimeSpan
whenLastSetUtc System.DateTime
timeToDecayTo System.DateTime
리턴 double

DecayingDouble() 공개 메소드

A double that decays with time
public DecayingDouble ( double initialValue = 0d, System.DateTime initialLastUpdateUtc = null ) : System
initialValue double The initial value of the double, which defaults to zero.
initialLastUpdateUtc System.DateTime The time when the value was set, which defaults to now.
리턴 System

GetValue() 공개 메소드

Get the value of the double at a given instant in time. If using the current system time, the preferred way to get the value is not to call this method but to simply access the Value field.
public GetValue ( System.TimeSpan halfLife, System.DateTime whenUtc = null ) : double
halfLife System.TimeSpan The half life to use when determining the current value.
whenUtc System.DateTime The instant of time for which the value should be calcualted, factoring in /// the decay rate. The default time is the current UTC time.
리턴 double

SetValue() 공개 메소드

public SetValue ( DecayingDouble source ) : void
source DecayingDouble
리턴 void

SetValue() 공개 메소드

Set the value at a point in time. If setting using the current system time, the preferred approach is to simply set the Value field.
public SetValue ( double newValue, System.DateTime whenUtc = null ) : void
newValue double The new value to set.
whenUtc System.DateTime When the set happened so as to correctly calculate future decay rates. /// Should be adjusted to UTC time. /// The default time is the current system time adjusted to UTC.
리턴 void

Subtract() 공개 메소드

public Subtract ( System.TimeSpan halfLife, DecayingDouble amountToRemove ) : DecayingDouble
halfLife System.TimeSpan
amountToRemove DecayingDouble
리턴 DecayingDouble

SubtractInPlace() 공개 메소드

public SubtractInPlace ( System.TimeSpan halfLife, DecayingDouble amountToSubtract ) : void
halfLife System.TimeSpan
amountToSubtract DecayingDouble
리턴 void

SubtractInPlace() 공개 메소드

public SubtractInPlace ( System.TimeSpan halfLife, double amountToSubtract, System.DateTime whenToSubtractIt ) : void
halfLife System.TimeSpan
amountToSubtract double
whenToSubtractIt System.DateTime
리턴 void