Генератор случайных чисел, который притягивает числа к любому заданному числу в диапазоне? - PullRequest
3 голосов
/ 28 апреля 2011

Я пытаюсь найти генератор случайных чисел, который возвращает значение с плавающей запятой в диапазоне от 0 до 1, взвешивает возвращаемое значение в одном или другом направлении.на основе передачи двух чисел, скажем Random (0,5), где «0,5» означает, что возвращаемое число от 0 до 1 будет стремиться к 0,5.

Ответы [ 2 ]

2 голосов
/ 09 марта 2015

То, что вы имеете в виду, - это случайное число, спроецированное на кривую колокола

, для которого я обычно делаю следующее

/// <summary>
/// generate a random number where the likelihood of a large number is greater than the likelihood of a small number
/// </summary>
/// <param name="rnd">the random number generator used to spawn the number</param>
/// <returns>the random number</returns>
public static double InverseBellCurve(Random rnd)
{
    return 1 - BellCurve(rnd);
}
/// <summary>
/// generate a random number where the likelihood of a small number is greater than the likelihood of a Large number
/// </summary>
/// <param name="rnd">the random number generator used to spawn the number</param>
/// <returns>the random number</returns>
public static double BellCurve(Random rnd)
{
    return  Math.Pow(2 * rnd.NextDouble() - 1, 2);
}
/// <summary>
/// generate a random number where the likelihood of a mid range number is greater than the likelihood of a Large or small number
/// </summary>
/// <param name="rnd">the random number generator used to spawn the number</param>
/// <returns>the random number</returns>
public static double HorizontalBellCurve(Random rnd)
{
    //This is not a real bell curve as using the cube of the value but approximates the result set
    return  (Math.Pow(2 * rnd.NextDouble() - 1, 3)/2)+.5;
}

Обратите внимание, что вы можете настроить формулы, чтобы изменить формуколокол для настройки распределения результатов

для примера: простой Math.Sqrt (rnd.nextdouble ()) наклонит все числа к 1, а простой Math.Power (rnd.nextdouble (), 2) наклонит результаты к 0

2 голосов
/ 28 апреля 2011

Это может помочь?

http://www.c -sharpcorner.com / UploadFile / trevormisfeldt / NormalDistribution08302005003434AM / NormalDistribution.aspx

Это не решит вашу проблему точно, но мне интересно, может ли моделирование кривой колокола обеспечить тенденцию, которую вы ищете.

Интересная проблема, могу ли я спросить, что вы пытаетесь решить?

2nd Edit: я только что заметил еще один вопрос S / O, который может помочь:

Случайное число в диапазоне на основе нормального распределения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...