gpt4 book ai didi

c# - 随机数生成器将数字吸引到范围内的任何给定数字?

转载 作者:行者123 更新时间:2023-11-30 15:44:48 24 4
gpt4 key购买 nike

我试图想出一个随机数生成器,它返回一个介于 0 和 1 之间的浮点值,并在一个方向或另一个方向对返回值进行加权。

是否有任何可靠的方法可以基于传入两个数字来执行此操作,例如 Random(0.5),其中“0.5”表示返回的 0 和 1 之间的数字将趋向于 0.5。

最佳答案

你指的是投影到钟形曲线上的随机数

我通常会做以下事情

/// <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 倾斜

关于c# - 随机数生成器将数字吸引到范围内的任何给定数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com