[英]How to do smooth Random in C# with step?
如何使用步骤0.4生成5到10的随机值?
我试过了:
var numberOfSteps = 0.4;
var _step = (maximum - minimum) / numberOfSteps;
var difference = maximum - minimum;
var stepsToDifference = Math.Round(difference / _step);
return Convert.ToString(minimum + _step * stepsToDifference);
这样的事情怎么样:
Random rand = new Random();
int intPart = 0;
int multiplesOfPointFour = 0;
bool doAgain = true;
double finalValue = 0.0;
while (doAgain)
{
intPart = rand.Next(5, 8);
multiplesOfPointFour = rand.Next(0, 6);
finalValue = intPart + (multiplesOfPointFour * 0.4);
Console.WriteLine("Value is: " + finalValue.ToString());
Console.Write("Press any key to go again...");
Console.ReadKey();
}
因此,我们选择5到10之间的整数,然后向该整数添加0.4到0到12之间的随机数,因为5.0 / 0.4 = 12.5
您是说要让数字为5、5.4、5.8,... 10吗? 由于5和10相隔5,并且不能被0.4整除,因此您将不得不停在9.8或10.2处,或者最后停一小步就停在10。
但是,这是如何获取属于该集合的成员的随机数的方法(在偶数.4步骤中,其范围是5到9.8之间的任何数字)。
Random rand = new Random();
float randomInSet = ((float)rand.Next(0,12)*.4)+5;
如果这不是您想要的,请告诉我。
试图生成一个随机的色相来创建真正不同的颜色,所以这里是:
//***************************************************************************
public static partial class RndExtensions
//***************************************************************************
{
//-------------------------------------------------------------
public static double NextDouble(this Random rnd, double from, double to, double step)
//-------------------------------------------------------------
{
var delta = to - from;
var nbOfSteps = (int)(delta / step);
var randomStep = rnd.Next(0, nbOfSteps);
return step*randomStep + from;
}
//-------------------------------------------------------------
public static double Next(this Random rnd, int from, int to, int step)
//-------------------------------------------------------------
{
var delta = to - from;
var nbOfSteps = (int)(delta / step);
var randomStep = rnd.Next(0, nbOfSteps);
return step * randomStep + from;
}
}
用作
Random rnd = new Random();
var randomHue = rnd.NextDouble(0, 359, 25);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.