2012-01-26 80 views
4

編輯我會重新解釋,每當我說小數,我的意思是system.decimal不是數學概念之間的C#生成隨機小數兩位小數

decimal min = 5.62; 
decimal max = 14.39; 

我將如何得到system.decimal是隨機的之間上述兩位小數的範圍爲

雙!= system.decimal

僅供參考,我不知道我怎樣才能使我的問題清晰,因爲一半以上閱讀本只讀2個字,然後標記爲重複的人。

+0

儘管你可能會想。這是一個重複的答案是你正在尋找的。 **兩個小數之間的小數點使得NO SENSE **它沒有意義的原因是因爲5.5是一個有效的小數值。 –

+0

@Rhhound我不是在尋找一個簡單的隨機小數,我不知道我有多清楚,我必須做到這一點,system.decimal必須是隨機的,但有兩個system.decimal的範圍謝謝你 – BananaPoop

回答

4

y = mx + c。使用NextDouble()隨機生成一個0 < = X < = X <,將其乘以(Dmax-Dmin)到正確的範圍內,然後添加Dmin以移動基數。

3

Scale的小數到整數或整數大(由10.適當的力量放大它們之間產生一個int,然後按10

動力分配或產生一個int,然後只是它的規模( 。線性)的小數之間

+0

如果你需要一個double來生成一個double,而不是一個int,除非你只需要一個簡短的,固定的精度。 – Servy

+0

@Servy OP引用的C#小數不是雙精度值,它是一個固定點數,可以縮放:http://msdn.microsoft.com/en-us/library/364x0z75%28v=vs.80%29 .aspx –

0
public static double randomDouble(Random rand, double start, double end) 
{  
    return (rand.NextDouble() * Math.Abs(end-start)) + start; 
} 
+3

OP明確詢問小數,而不是double。 – spender

+0

@BananaPoop http://msdn.microsoft.com/en-us/library/system.random.nextdouble.aspx – Servy

+0

@spender在我寫這篇文章的時候,OP對'decimal'的使用在數據類型和數學概念(其中雙重肯定適用)。他的具體陳述以及他在這裏的評論表明,他甚至不知道隨機可能會產生一個隨機雙倍數,認爲它只能產生Ints。 – Servy

1

這裏是一個資源在這裏StackOverflow上;)

Generating a Random Decimal in C#

或y你可以嘗試:

Random random = new Random(); 
Math.Round((random.NextDouble()/100),3)); 

希望這有助於!