문제

I am trying to generate three random number inside a for loop:

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

So my question is:

How to get equally spaced random number for each item1, 2 and 3

like item1 = 10,20,30,40,50 item2 = 40, 60, 80, item3 = 25,35,45, etc.

도움이 되었습니까?

해결책

You just want to round random numbers, or scale/project them after the generating.

This is... multiplication. Sample: (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";
    }
}

Output:

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

다른 팁

The numbers you want is not at all random infact this is sequence

You can do something like

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;
}

It will generate 10, 15, 20, ...

Maybe you are trying to get initial random number of a random equally spaced sequence, like this:

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
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top