Quaternion InitialTilt() { var gaussian = BoxMuller.Gaussian(); var tilt = Quaternion.Euler(tiltPower * gaussian.x, Random.Range(0f, ROUND_IN_DEG), tiltPower * gaussian.y); return(tilt); }
public void ExecuteBoxMullerToCsvFile() { var results = new double[users, iterations + cellsBefore, paramsGen]; // Go over all the users for (var i = 0; i < users; i++) { _boxMuller = new BoxMuller(i); // for each param for (var j = 0; j < paramsGen; j++) { results[i, 0, j] = mean[i]; results[i, 1, j] = stnDev[i]; // Iterations for (var k = cellsBefore; k < iterations + cellsBefore; k++) { var r = (int)_boxMuller.GetNormalWithLimits(mean[i], stnDev[i], 1, 10); results[i, k, j] = r; } } } WriteToCSV(results); }
public void ExecuteBoxMullerToCsvFile2() { var results = new double[users, iterations + cellsBefore, paramsGen]; for (var i = 0; i < users; i++) { _boxMuller = new BoxMuller(i); for (var j = 0; j < paramsGen; j++) { results[i, 0, j] = mean[i]; results[i, 1, j] = stnDev[i]; for (var k = cellsBefore; k < iterations + cellsBefore; k++) { // r_i = N(M_i,SD_i) var r = (int)_boxMuller.GetNormalWithLimits(mean[i], stnDev[i], 1, 10); results[i, k, j] = r; // Don't continue on last iteration if (k == iterations + cellsBefore - 1) { break; } // M_i+1 = N(M_i,SD_i) > M_i ? M_i + 0.5 : M_i mean[i] = (r > mean[i] + Limit) ? mean[i] + Value : mean[i]; mean[i] = (r < mean[i] - Limit) ? mean[i] - Value : mean[i]; } } } WriteToCSV(results); }
private void InitializeMovesetScore(List <ActionBase> actions, float precision) { _movesetScore = new SortedSet <Tuple <float, ActionBase> >(new ActionWeight()); foreach (ActionBase action in actions) { float weight = precision * (BoxMuller.GetRandom() / 2 + 1); if (!action.CheckCost(this._char)) { weight = 0; } _movesetScore.Add(new Tuple <float, ActionBase>(weight, action)); } }
public void PerturbScore() { SortedSet <Tuple <float, ActionBase> > newScore = new SortedSet <Tuple <float, ActionBase> >(new ActionWeight()); foreach (Tuple <float, ActionBase> action in _movesetScore) { float score = action.Item1 * (BoxMuller.GetRandom() / 2 + 1); // Rubberband score -= (score - _precision) * _weight; newScore.Add(new Tuple <float, ActionBase>(score, action.Item2)); } _movesetScore = newScore; }