2014-02-05 59 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