Я пытаюсь сгенерировать три случайных числа внутри цикла:
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
как item1 = 10,20,30,40,50 item2 = 40, 60, 80, item3 = 25,35,45 и т. д.
Вы просто хотите округлить случайные числа или масштабировать / проецировать их после генерации.
Это … умножение. Образец: (Жить на Колиру)
#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
Числа, которые вы хотите, вовсе не случайные, это последовательность
Вы можете сделать что-то вроде
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, …
Может быть, вы пытаетесь получить начальное случайное число случайной равноправной последовательности, например так:
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
}