2014-02-05 82 views
-4

我試圖生成循環內三個隨機數:如何獲得均勻分佈的隨機數?

for (i=0; i<100; i++) 
{ 
    item1 = rand()/(double)RAND_MAX*100; 
    item2 = rand()/(double)RAND_MAX*200; 
    item3 = rand()/(double)RAND_MAX*300; 
} 

所以我的問題是:

如何獲得等距隨機數爲每個項目1,2和3

像物品1 = 10,20,30,40,50 ITEM2 = 40,60,80,項目3 = 25,35,45等

+1

如果他們是等距的,那麼它們不是隨機的。也許你可以說清楚你的意思。 –

+0

用戶sehe說得對。 – snoze

+0

你是否明白你的問題很差?你應該編輯它來清楚你的意思。 –

回答

0

你只是想生成後圓的隨機數或小數/項目他們。

這是...乘法。示例:(Live On Coliru

#include <random> 
#include <iostream> 

int main() 
{ 
    std::mt19937 engine(time(NULL)); 
    std::uniform_int_distribution<int> dist(0,10); // arbitrary range chosen 

    for (int i=30; i>0; --i) 
    { 
     int random = dist(engine); 
     std::cout << (random*10) << "\t" << (random*20) << "\t" << (random*10 + 15) << "\n"; 
    } 
} 

輸出:

90 180 105 
30 60 45 
90 180 105 
50 100 65 
70 140 85 
10 20 25 
40 80 55 
30 60 45 
80 160 95 
60 120 75 
0 0 15 
40 80 55 
20 40 35 
20 40 35 
90 180 105 
50 100 65 
80 160 95 
0 0 15 
0 0 15 
0 0 15 
40 80 55 
50 100 65 
10 20 25 
60 120 75 
100 200 115 
80 160 95 
70 140 85 
90 180 105 
30 60 45 
60 120 75 
+0

感謝您的回覆。我無法使用您正在使用的庫。我的gnu g ++不支持它。但是,在我的代碼中,我無法得到確切的10,20等數字,就像你得到的那樣。你認爲我的代碼有些變化,所以我可以使用gnu g ++編譯器。非常感謝您的時間。 – snoze

+0

明白了。用g ++ -std = C++ 11選項你的代碼正在工作。你拯救了我的一天。非常感謝。 – snoze

+0

請注意,爲了演示的目的,我將不同輸出的範圍限制爲11個值(0..10)。這可能不適合你。更改'dist'上的邊界參數進行調整:) – sehe

0

你想要的數字是不是在所有隨機INFACT這是序列

你可以做這樣的事情

int sequence =5; 
int initial=10; 

For (i=0; i<100; i++) 
{ 
item1 = initial; 
initial=initial+sequence; 
item2 = initial; 
initial=initial+sequence; 
item3 = initial; 
initial=initial+sequence; 
} 

它會生成10,15,20,...

-1

也許你正在試圖獲得一個隨機等距序列的初始隨機數,象這樣:

for (i=0; i<100; i++) 
{ 
    if(i == 0) 
    { 
     item1 = rand()/(double)RAND_MAX*100; 
     item2 = rand()/(double)RAND_MAX*200; 
     item3 = rand()/(double)RAND_MAX*300; 

     increment1 = rand()/(double)RAND_MAX*100; 
     increment2 = rand()/(double)RAND_MAX*200; 
     increment3 = rand()/(double)RAND_MAX*300; 
    } 
    else 
    { 
     item1 += increment1; 
     item2 += increment2; 
     item3 += increment3; 
    } 

    //do stuff 
} 
+0

我想保留1到100之間的數字。 – snoze

+0

哪個數字,項目或增量?你是否還需要保持增量不變? – Felipe