2015-11-06 57 views
-1

如何在C中創建函數,這會在設置參數之間生成隨機數}((double類型))?在很多languedages它只是只是只是創建在兩個參數之間生成隨機數的函數C

function randomnumber(min, max) { 
    return Math.random() * (max - min + 1) + min; 
} 

但我找不到任何良好的解決方案類型雙c中。

+0

...你使用'floor'所以你真的想要一個隨機*整數*? – hobbs

+0

的確,我剛剛注意到,謝謝指出 – Darlyn

+0

'function' ...? :)返回類型?參數類型? –

回答

1

有幾種方法。上面的答案是可以的,min,max是雙打。 rand()要記住的重要一點是,它會返回0RAND_MAX之間的隨機整數。 RAND_MAX至少是2^15,但在大多數系統2^31上。如果最小值和最大值是整數,其差值小於RAND_MAX然後一個非常容易的方法是:

delta = max - min; 
r = rand() % delta + min; 
0
#include <stdlib.h> /* rand(), srand(), RAND_MAX */ 

double randd(double min, double max) { 
    int r = rand(); 
    double delta = max - min; /* assume max > min */ 
    double tmp = r/(RAND_MAX + 1.0); /* generate up to but excluding max */ 
    return tmp * delta + min; 
} 
+0

看到它運行:http://ideone.com/EOGwIJ – pmg

+1

OP對目標不是很具體,但這個答案可能不會在'min'和'max'之間產生每個'double'。 – chux

+0

@chux根據'min'和'max',這個答案及其偏倚可以在這些值之間產生每個'double'....並重復一些引導的答案(認爲52位爲尾數和63位爲PRNG)。 – pmg