簡體   English   中英

如何在C#中使用step平滑Random?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM