private void init(int number, bool previewMode, EntropySettings entropySettings) { dimensions = ChaosSettings_implant.getDimensions(); sampleCount = number; pMode = previewMode; entropySettings_implant = entropySettings; }
private static double pGetCustomMappedRandomNumber(string equation, EntropySettings settings) { double value = 1E-15; double xvalue = pGetRandomDouble(settings); while (xvalue < value) { xvalue = pGetRandomDouble(settings); } double yvalue = pGetRandomDouble(settings); while (yvalue < value) { yvalue = pGetRandomDouble(settings); } double zvalue = pGetRandomDouble(settings); while (zvalue < value) { zvalue = pGetRandomDouble(settings); } try { ExpressionParser parser = new(); parser.Values.Add("x", xvalue); parser.Values.Add("y", yvalue); parser.Values.Add("z", zvalue); // Substitute any Box-Muller queries with the full form. equation = equation.Replace("_gxy", "(sqrt(-2 * ln(y)) * cos(2 * PI * x))"); equation = equation.Replace("_gyz", "(sqrt(-2 * ln(z)) * cos(2 * PI * y))"); equation = equation.Replace("_gxz", "(sqrt(-2 * ln(z)) * cos(2 * PI * x))"); value = parser.Parse(equation); } catch (Exception e) { ErrorReporter.showMessage_OK(e.ToString(), "RNG mapper error"); } return(value); }
private static double pGetGaussianRandomNumber(EntropySettings settings) { double value; switch (settings.getValue(EntropySettings.properties_i.rngType)) { case (int)commonRNG.rngIndex.crypto: value = Crypto_RNG.random_gauss()[0]; break; case (int)commonRNG.rngIndex.mtwister: value = MersenneTwister_RNG.random_gauss()[0]; break; default: value = RNG.random_gauss()[0]; break; } return(value); }
private static int pGetRandomInt(EntropySettings settings) { int value; switch (settings.getValue(EntropySettings.properties_i.rngType)) { case (int)commonRNG.rngIndex.crypto: value = Crypto_RNG.nextint(); break; case (int)commonRNG.rngIndex.mtwister: value = MersenneTwister_RNG.nextint(); break; default: value = RNG.nextint(); break; } return(value); }
private void pChaosSettings_implant(bool previewMode_, EntropySettings entropySettings) { previewMode = previewMode_; if (previewMode) { implant_resistCDVar = 0; implant_resistHeightVar = 0; implant_resistTopCRRVar = 0; implant_tiltVar = 0; implant_twistVar = 0; } else { switch (entropySettings.getValue(EntropySettings.properties_i.rngType)) { case (int)commonRNG.rngIndex.mtwister: implant_resistCDVar = MersenneTwister_RNG.random_gauss3()[0]; implant_resistHeightVar = MersenneTwister_RNG.random_gauss3()[0]; implant_resistTopCRRVar = MersenneTwister_RNG.random_gauss3()[0]; implant_tiltVar = MersenneTwister_RNG.random_gauss3()[0]; implant_twistVar = MersenneTwister_RNG.random_gauss3()[0]; break; case (int)commonRNG.rngIndex.crypto: implant_resistCDVar = Crypto_RNG.random_gauss3()[0]; implant_resistHeightVar = Crypto_RNG.random_gauss3()[0]; implant_resistTopCRRVar = Crypto_RNG.random_gauss3()[0]; implant_tiltVar = Crypto_RNG.random_gauss3()[0]; implant_twistVar = Crypto_RNG.random_gauss3()[0]; break; default: implant_resistCDVar = RNG.random_gauss3()[0]; implant_resistHeightVar = RNG.random_gauss3()[0]; implant_resistTopCRRVar = RNG.random_gauss3()[0]; implant_tiltVar = RNG.random_gauss3()[0]; implant_twistVar = RNG.random_gauss3()[0]; break; } } }
public Sampler_Implant(int number, bool previewMode, EntropySettings entropySettings) { init(number, previewMode, entropySettings); }
public ChaosSettings_implant(bool previewMode_, EntropySettings entropySettings) { pChaosSettings_implant(previewMode_, entropySettings); }
private void pChaosSettings(bool previewMode_, List<EntropyLayerSettings> listOfSettings, EntropySettings simSettings) // set to true for preview; else we run with random inputs { customRNGMapping = false; previewMode = previewMode_; int count = listOfSettings.Count; overlayX = new double[count]; overlayY = new double[count]; hTipBiasType = new double[count]; vTipBiasType = new double[count]; horTipBiasVar = new double[count]; verTipBiasVar = new double[count]; iCVar = new double[count]; iC_PAsearch = new bool[count]; oCVar = new double[count]; oC_PAsearch = new bool[count]; LWRVar = new double[count]; LWR2Var = new double[count]; CDUSVar = new double[count]; CDUTVar = new double[count]; wobbleVar = new double[count]; LWRSeed = new int[count]; LWR2Seed = new int[count]; #if !CHAOSSINGLETHREADED Parallel.For(0, count, i => #else for (int i = 0; i < count; i++) #endif { iC_PAsearch[i] = false; oC_PAsearch[i] = false; LWRSeed[i] = 1; LWR2Seed[i] = 1; if (previewMode) { overlayX[i] = 0; overlayY[i] = 0; hTipBiasType[i] = 0; vTipBiasType[i] = 0; horTipBiasVar[i] = 0; verTipBiasVar[i] = 0; iCVar[i] = 0; oCVar[i] = 0; LWRVar[i] = 0; LWR2Var[i] = 0; CDUSVar[i] = 0; CDUTVar[i] = 0; wobbleVar[i] = 0; } else { if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.xOL_RNG))) { customRNGMapping = true; overlayX[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.xOL_RNG), simSettings); } else { overlayX[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.yOL_RNG))) { customRNGMapping = true; overlayY[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.yOL_RNG), simSettings); } else { overlayY[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } hTipBiasType[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); vTipBiasType[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); horTipBiasVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); // Need to pay attention to sign here, to pull the right custom equation. if (hTipBiasType[i] < 0.5 && rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipNVar_RNG))) { customRNGMapping = true; horTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipNVar_RNG), simSettings); } if (hTipBiasType[i] >= 0.5 && rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipPVar_RNG))) { customRNGMapping = true; horTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipPVar_RNG), simSettings); } verTipBiasVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); // Need to pay attention to sign here, to pull the right custom equation. if (vTipBiasType[i] < 0.5 && rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipNVar_RNG))) { customRNGMapping = true; verTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipNVar_RNG), simSettings); } if (vTipBiasType[i] >= 0.5 && listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipPVar_RNG) != "" && listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipPVar_RNG) != CommonVars.boxMuller) { verTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipPVar_RNG), simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.iCV_RNG))) { customRNGMapping = true; iCVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.iCV_RNG), simSettings); } else { iCVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.oCV_RNG))) { customRNGMapping = true; oCVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.oCV_RNG), simSettings); } else { oCVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr_RNG))) { customRNGMapping = true; LWRVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr_RNG), simSettings); } else { LWRVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr2_RNG))) { customRNGMapping = true; LWR2Var[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr2_RNG), simSettings); } else { LWR2Var[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.sCDU_RNG))) { customRNGMapping = true; CDUSVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.sCDU_RNG), simSettings); } else { CDUSVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } // Note that the TVar will be matched to SVar if the simulation settings call for these to be linked. if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.tCDU_RNG))) { customRNGMapping = true; CDUTVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.tCDU_RNG), simSettings); } else { CDUTVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.wobble_RNG))) { customRNGMapping = true; wobbleVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.wobble_RNG), simSettings); } else { wobbleVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings); } LWRSeed[i] = UtilityFuncs.getRandomInt(simSettings); LWR2Seed[i] = UtilityFuncs.getRandomInt(simSettings); } }
public ChaosSettings(bool previewMode_, List<EntropyLayerSettings> listOfSettings, EntropySettings simSettings) // set to true for preview; else we run with random inputs { pChaosSettings(previewMode_, listOfSettings, simSettings); }
public static double getGaussianRandomNumber(EntropySettings settings) { return(pGetGaussianRandomNumber(settings)); }
public static double getRandomDouble(EntropySettings settings) { return(pGetRandomDouble(settings)); }
public static double getCustomMappedRandomNumber(string equation, EntropySettings settings) { return(pGetCustomMappedRandomNumber(equation, settings)); }
public static int getRandomInt(EntropySettings settings) { return(pGetRandomInt(settings)); }