[英]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.