0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
1

Сгенерировать случайные числа

17.05.2015, 21:40. Показов 791. Ответов 17
Метки нет (Все метки)

Ребята, интересует такой вопрос. Ниже представлен кусок кода, который, так сказать, генерирует мат. модель для пакета LP-solve, где принимают участие 853 узла АТС, и здесь отражена попытка написать балансовые уравнения и пропускные способности узлов. Как можно сделать так, что числа, которые я задал в данном куске кода, генерировались случайным образом. То есть, например вместо j+1 было j+ rand (1..99). И чтобы в строке данные числа не повторялись. Переписывать эту чушь очень не хочется. Можно же как-то все упростить?)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
    for (k = 2; k <= n; k++)
    {
        i = (k - 1) * 100;
        j = k * 100;
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i, j+1, j+2, j+3);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+1, j+2, j+3, j+4, j+5);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+2, j+3, j+4, j+5);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+3, j+4, j+5, j+6, j+7);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+4, j+5, j+6, j+7);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+5, j+6, j+7, j+8, j+9);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+6, j+7, j+8, j+9);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+7, j+8, j+9, j+10, j+11);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+8, j+9, j+10, j+11);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+9, j+10, j+11, j+12, j+13);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+10, j+11, j+12, j+13);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+11, j+12, j+13, j+14, j+15);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+12, j+13, j+14, j+15);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+13, j+14, j+15, j+16, j+17);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+14, j+15, j+16, j+17);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+15, j+16, j+17, j+18, j+19);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+16, j+17, j+18, j+19);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+17, j+18, j+19, j+20, j+21);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+18, j+19, j+20, j+21);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+19, j+20, j+21, j+22, j+23);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+20, j+21, j+22, j+23);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+21, j+22, j+23, j+24, j+25);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+22, j+23, j+24, j+25);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+23, j+24, j+25, j+26, j+27);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+24, j+25, j+26, j+27);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+25, j+26, j+27, j+28, j+29);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+26, j+27, j+28, j+29);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+27, j+28, j+28, j+29, j+30);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+28, j+29, j+30, j+31);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+29, j+30, j+31, j+32, j+33);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+30, j+31, j+32, j+33);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+31, j+32, j+33, j+34, j+35);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+32, j+33, j+34, j+35);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+33, j+34, j+35, j+36, j+37);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+34, j+35, j+36, j+37);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+35, j+36, j+37, j+38, j+39);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+35, j+36, j+37, j+38);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+36, j+37, j+38, j+39, j+40);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+41, j+42, j+43, j+44);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+42, j+43, j+44, j+45, j+46);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+43, j+44, j+45, j+46);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+44, j+45, j+46, j+47, j+48);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+45, j+46, j+47, j+48);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+46, j+47, j+48, j+49, j+50);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+47, j+48, j+49, j+50);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+48, j+49, j+50, j+51, j+52);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+49, j+50, j+51, j+52);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+50, j+51, j+52, j+53, j+54);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+51, j+52, j+53, j+54, j+55);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+52, j+53, j+54, j+55);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+53, j+54, j+55, j+56, j+57);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+54, j+55, j+56, j+57);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+55, j+55, j+56, j+57, j+58);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+56, j+57, j+58, j+59);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+57, j+58, j+59, j+60, j+61);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+58, j+59, j+60, j+61);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+59, j+60, j+61, j+62, j+63);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+60, j+61, j+62, j+63);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+61, j+62, j+63, j+64, j+65);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+62, j+63, j+64, j+65);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+63, j+64, j+65, j+66, j+67);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+64, j+65, j+66, j+67);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+65, j+66, j+67, j+68, j+69);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+66, j+67, j+68, j+69);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+67, j+68, j+69, j+70, j+71);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+68, j+69, j+70, j+71);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+69, j+70, j+71, j+72, j+73);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+70, j+71, j+72, j+73);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+71, j+72, j+73, j+74, j+75);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+72, j+73, j+74, j+75);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+73, j+74, j+75, j+76, j+77);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+74, j+75, j+76, j+77);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+75, j+76, j+77, j+78, j+79);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+76, j+77, j+78, j+79);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+77, j+78, j+79, j+80, j+81);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+78, j+79, j+80, j+81);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+79, j+80, j+81, j+82, j+83);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+80, j+81, j+82, j+83);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+81, j+82, j+83, j+84, j+85);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+82, j+83, j+84, j+85);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+83, j+84, j+85, j+86, j+87);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+84, j+85, j+86, j+87);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+85, j+86, j+87, j+88, j+89);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+86, j+87, j+88, j+89);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+87, j+88, j+89, j+90, j+91);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+88, j+89, j+90, j+91);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+89, j+90, j+91, j+92, j+93);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+90, j+91, j+92, j+93);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+91, j+92, j+93, j+94, j+95);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+92, j+93, j+94, j+95);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+93, j+94, j+95, j+96, j+97);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+94, j+95, j+96, j+97);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+95, j+96, j+97, j+98, j+99);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+96, j+97, j+98, j+99);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+97, j+98, j+99, j+96, j+95);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+98, j+99, j+98, j+97);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+99, j+98, j+97, j+96, j+95);
 
        fprintf(fl, "x%d <= %d;\n", j, randtube());
        fprintf(fl, "x%d <= %d;\n", j+1, randtube());
        fprintf(fl, "x%d <= %d;\n", j+2, randtube());
        fprintf(fl, "x%d <= %d;\n", j+3, randtube());
        fprintf(fl, "x%d <= %d;\n", j+4, randtube());
        fprintf(fl, "x%d <= %d;\n", j+5, randtube());
        fprintf(fl, "x%d <= %d;\n", j+6, randtube());
        fprintf(fl, "x%d <= %d;\n", j+7, randtube());
        fprintf(fl, "x%d <= %d;\n", j+8, randtube());
        fprintf(fl, "x%d <= %d;\n", j+9, randtube());
        fprintf(fl, "x%d <= %d;\n", j+10, randtube());
        fprintf(fl, "x%d <= %d;\n", j+11, randtube());
        fprintf(fl, "x%d <= %d;\n", j+13, randtube());
        fprintf(fl, "x%d <= %d;\n", j+14, randtube());
        fprintf(fl, "x%d <= %d;\n", j+15, randtube());
        fprintf(fl, "x%d <= %d;\n", j+16, randtube());
        fprintf(fl, "x%d <= %d;\n", j+17, randtube());
        fprintf(fl, "x%d <= %d;\n", j+18, randtube());
        fprintf(fl, "x%d <= %d;\n", j+19, randtube());
        fprintf(fl, "x%d <= %d;\n", j+20, randtube());
        fprintf(fl, "x%d <= %d;\n", j+21, randtube());
        fprintf(fl, "x%d <= %d;\n", j+22, randtube());
        fprintf(fl, "x%d <= %d;\n", j+23, randtube());
        fprintf(fl, "x%d <= %d;\n", j+24, randtube());
        fprintf(fl, "x%d <= %d;\n", j+25, randtube());
        fprintf(fl, "x%d <= %d;\n", j+26, randtube());
        fprintf(fl, "x%d <= %d;\n", j+27, randtube());
        fprintf(fl, "x%d <= %d;\n", j+28, randtube());
        fprintf(fl, "x%d <= %d;\n", j+29, randtube());
        fprintf(fl, "x%d <= %d;\n", j+30, randtube());
        fprintf(fl, "x%d <= %d;\n", j+31, randtube());
        fprintf(fl, "x%d <= %d;\n", j+32, randtube());
        fprintf(fl, "x%d <= %d;\n", j+33, randtube());
        fprintf(fl, "x%d <= %d;\n", j+34, randtube());
        fprintf(fl, "x%d <= %d;\n", j+35, randtube());
        fprintf(fl, "x%d <= %d;\n", j+36, randtube());
        fprintf(fl, "x%d <= %d;\n", j+37, randtube());
        fprintf(fl, "x%d <= %d;\n", j+38, randtube());
        fprintf(fl, "x%d <= %d;\n", j+39, randtube());
        fprintf(fl, "x%d <= %d;\n", j+40, randtube());
        fprintf(fl, "x%d <= %d;\n", j+41, randtube());
        fprintf(fl, "x%d <= %d;\n", j+42, randtube());
        fprintf(fl, "x%d <= %d;\n", j+43, randtube());
        fprintf(fl, "x%d <= %d;\n", j+44, randtube());
        fprintf(fl, "x%d <= %d;\n", j+45, randtube());
        fprintf(fl, "x%d <= %d;\n", j+46, randtube());
        fprintf(fl, "x%d <= %d;\n", j+47, randtube());
        fprintf(fl, "x%d <= %d;\n", j+48, randtube());
        fprintf(fl, "x%d <= %d;\n", j+49, randtube());
        fprintf(fl, "x%d <= %d;\n", j+50, randtube());
        fprintf(fl, "x%d <= %d;\n", j+51, randtube());
        fprintf(fl, "x%d <= %d;\n", j+52, randtube());
        fprintf(fl, "x%d <= %d;\n", j+53, randtube());
        fprintf(fl, "x%d <= %d;\n", j+54, randtube());
        fprintf(fl, "x%d <= %d;\n", j+55, randtube());
        fprintf(fl, "x%d <= %d;\n", j+56, randtube());
        fprintf(fl, "x%d <= %d;\n", j+57, randtube());
        fprintf(fl, "x%d <= %d;\n", j+58, randtube());
        fprintf(fl, "x%d <= %d;\n", j+59, randtube());
        fprintf(fl, "x%d <= %d;\n", j+60, randtube());
        fprintf(fl, "x%d <= %d;\n", j+61, randtube());
        fprintf(fl, "x%d <= %d;\n", j+62, randtube());
        fprintf(fl, "x%d <= %d;\n", j+63, randtube());
        fprintf(fl, "x%d <= %d;\n", j+64, randtube());
        fprintf(fl, "x%d <= %d;\n", j+65, randtube());
        fprintf(fl, "x%d <= %d;\n", j+66, randtube());
        fprintf(fl, "x%d <= %d;\n", j+67, randtube());
        fprintf(fl, "x%d <= %d;\n", j+68, randtube());
        fprintf(fl, "x%d <= %d;\n", j+69, randtube());
        fprintf(fl, "x%d <= %d;\n", j+70, randtube());
        fprintf(fl, "x%d <= %d;\n", j+71, randtube());
        fprintf(fl, "x%d <= %d;\n", j+72, randtube());
        fprintf(fl, "x%d <= %d;\n", j+73, randtube());
        fprintf(fl, "x%d <= %d;\n", j+74, randtube());
        fprintf(fl, "x%d <= %d;\n", j+75, randtube());
        fprintf(fl, "x%d <= %d;\n", j+76, randtube());
        fprintf(fl, "x%d <= %d;\n", j+77, randtube());
        fprintf(fl, "x%d <= %d;\n", j+78, randtube());
        fprintf(fl, "x%d <= %d;\n", j+79, randtube());
        fprintf(fl, "x%d <= %d;\n", j+80, randtube());
        fprintf(fl, "x%d <= %d;\n", j+81, randtube());
        fprintf(fl, "x%d <= %d;\n", j+82, randtube());
        fprintf(fl, "x%d <= %d;\n", j+83, randtube());
        fprintf(fl, "x%d <= %d;\n", j+84, randtube());
        fprintf(fl, "x%d <= %d;\n", j+85, randtube());
        fprintf(fl, "x%d <= %d;\n", j+86, randtube());
        fprintf(fl, "x%d <= %d;\n", j+87, randtube());
        fprintf(fl, "x%d <= %d;\n", j+88, randtube());
        fprintf(fl, "x%d <= %d;\n", j+89, randtube());
        fprintf(fl, "x%d <= %d;\n", j+90, randtube());
        fprintf(fl, "x%d <= %d;\n", j+91, randtube());
        fprintf(fl, "x%d <= %d;\n", j+92, randtube());
        fprintf(fl, "x%d <= %d;\n", j+93, randtube());
        fprintf(fl, "x%d <= %d;\n", j+94, randtube());
        fprintf(fl, "x%d <= %d;\n", j+95, randtube());
        fprintf(fl, "x%d <= %d;\n", j+96, randtube());
        fprintf(fl, "x%d <= %d;\n", j+97, randtube());
        fprintf(fl, "x%d <= %d;\n", j+98, randtube());
        fprintf(fl, "x%d <= %d;\n", j+99, randtube());
    }
Добавлено через 5 часов 35 минут
Ребят, выручайте, помощь все еще актуальна. Разобрался с циклами и кое-что усовершенствовал, если можно так сказать. Но по до сих пор не могу разобраться как в fprint'e генерировать случайные числа от 1 до 99?
Чтобы было аля
C++
1
fprintf(fl, "x%d + x%d + x%d = x%d;\n", i+rand (1..99), i+rand (1..99), i+rand(1..99), j+rand (1..99));
Как это все правильно сделать, чтобы задание случайного числа была в fprint? Был бы очень благодарен



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
int randtube(void)
{
    return 1;
}
int main(int argc, char *argv[])
{
    FILE *fl;
    int n, j, i, k;
    fl = fopen("myone.lp", "w");
    n = 8;
    fprintf(fl, "max: x0 ;\n\n");
    fprintf(fl, "x0 = x1 + x2 + x3 + x4 + x5;\n\n");
    for (j=1; j<=100; j++)
    {
        fprintf(fl, "x%d <= %d;\n", j, randtube());
    }
    for (k = 1; k <= n; k++)
    {
        i = (k - 1) * 100;
        j = k * 100;
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+4, j, j+4, j+5);
        fprintf(fl, "x%d + x%d + x%d = x%d + x%d + x%d;\n", i+7, i+5, i+6, j+1, j+6, j+7);
        fprintf(fl, "x%d + x%d + x%d = x%d + x%d + x%d;\n", i+1, i+7, i+8, j+2, j+8, j+9);
        fprintf(fl, "x%d + x%d + x%d = x%d + x%d + x%d;\n", i+2, i+9, i+10, j+3, j+10, j+11);
        fprintf(fl, "x%d + x%d + x%d = x%d;\n", i+3, i+11, i+12, j+12);
        for (j=1; j<=100; j++)
        {
            fprintf(fl, "x%d <= %d;\n", 100*k+j, randtube());
        }
    }
    for (j=1; j<=53; j++)
    {
        fprintf(fl, "x%d <= %d;\n", 800+j, randtube());
    }
    fclose(fl);
    printf("\nThat is all!");
    return 1;
}
Добавлено через 13 минут
Можно сделать вот так, но как сделать, чтобы в строке каждой числа были разные? Заранее спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        int m = rand() % 99 +1;
    fl = fopen("myone.lp", "w");
    n = 8;
 
    fprintf(fl, "max: x0 ;\n\n");
    fprintf(fl, "x0 = x1 + x2 + x3 + x4 + x5;\n\n");
    for (j=1; j<=100; j++)
    {
        fprintf(fl, "x%d <= %d;\n", j, randtube());
    }
    for (k = 1; k <= n; k++)
    {
        i = (k - 1) * 100;
        j = k * 100;
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+m, j+m, j+m, j+m);
....
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 21:40
Ответы с готовыми решениями:

Сгенерировать случайные числа от 1000 до 1112
for (int i = 1; i &lt;= 10; i++) { n = 1000 + rand () % 1112; cout &lt;&lt; n &lt;&lt;...

Сгенерировать случайные числа без повторений
Нужно выбрать 8 чисел в диапазоне от 1 до 16 включительно, чтоб они не повторялись. и записать в...

Как сгенерировать случайные числа в заданном интервале?
как правильно сгенерировать вещественный массив на промежутке mas = (float)(rand()%20001)/50); ...

Сгенерировать случайные числа с плавающей точкой в заданном диапазоне, включающем и отрицательные значения
возникла проблема, не могу решить... раньше когда пользовался функ. ( x + rand() % x ) с целыми...

17
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
17.05.2015, 22:27 2
Внутрь цикла rand() вставь, перед 15-й строкой.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 00:44  [ТС] 3
Не совсем понял как делать. Можно поподробнее как этот цикл оформить? Спасибо большое

Добавлено через 1 час 41 минуту
сделал, но, увы, не работает

Добавлено через 1 минуту
nmcf, к сожалению, не работает
0
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
18.05.2015, 09:27 4
Что не работает? Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    fl = fopen("myone.lp", "w");
    n = 8;
 
    fprintf(fl, "max: x0 ;\n\n");
    fprintf(fl, "x0 = x1 + x2 + x3 + x4 + x5;\n\n");
    for (j=1; j<=100; j++)
    {
        fprintf(fl, "x%d <= %d;\n", j, randtube());
    }
    for (k = 1; k <= n; k++)
    {
        i = (k - 1) * 100;
        j = k * 100;
        int m = rand() % 99 +1;
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i+m, j+m, j+m, j+m);
Или тебе нужны везде разные числа? Тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    fl = fopen("myone.lp", "w");
    n = 8;
 
    fprintf(fl, "max: x0 ;\n\n");
    fprintf(fl, "x0 = x1 + x2 + x3 + x4 + x5;\n\n");
    for (j=1; j<=100; j++)
    {
        fprintf(fl, "x%d <= %d;\n", j, randtube());
    }
    for (k = 1; k <= n; k++)
    {
        i = (k - 1) * 100;
        j = k * 100;
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
1
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 09:54  [ТС] 5
nmcf, Огонь! Я так же сделал (приятно, что сам додумался ), но у меня почему-то не сработало, а как сделать так чтобы в каждой конкретной строке сгенерированные числа для j не повторялись? то есть не было такого, чтобы x34 = x158 + x130 + x130, например. И для i тоже, то есть, если x34 = x158 + x130 + x186 было, больше не могло выводить, скажем x34 = x112 + x130 + x116. Еще раз спасибо
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 11:38 6
anton_zenit, добавить проверку значений, полученных rand.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 11:45  [ТС] 7
Zheka317, к сожалению, как это реализовать я совершенно не представляю. Будь добр, выручай. Курсач на носу Заранее спасибо
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 11:51 8
anton_zenit, самое простое:

C++
1
2
3
4
5
6
7
i1 = rand();
i2 = rand();
i3 = rand();
if (i1 != i2 && i1!= i3 && i2 != i3)
{
...
}
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 11:53  [ТС] 9
тогда тут надо задавать неимоверное кол-во переменных + все эти комбинации перебирать. можно же это как-то проще сделать?
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 12:02 10
anton_zenit, то, что Вы делаете вручную, можно было сделать в цикле, как мне кажется.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 12:06  [ТС] 11
да, нет. вручную я тут как раз ничего не делаю. пока моя программка такова:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <cstdlib>
int randtube(void)
{
    return 1;
}
int main(int argc, char *argv[])
{
    FILE *fl;
    int n, j, i, k;
    fl = fopen("myone.lp", "w");
    n = 8;
 
    fprintf(fl, "max: x0 ;\n\n");
    fprintf(fl, "x0 = x1 + x2 + x3 + x4 + x5;\n\n");
    for (j=1; j<=100; j++)
    {
        fprintf(fl, "x%d <= %d;\n", j, rand() % 4 +1);
    }
    for (k = 1; k <= n; k++)
    {
        i = (k - 1) * 100;
        j = k * 100;
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d;\n", i + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1, j + rand() % 99 +1);
        fprintf(fl, "x%d = x%d + x%d + x%d + x%d;\n", i+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1, j+rand() % 99 +1);
        for (j=1; j<=100; j++)
        {
            fprintf(fl, "x%d <= %d;\n", 100*k+j, rand() % 4 +1);
        }
    }
    for (j=1; j<=53; j++)
    {
        fprintf(fl, "x%d <= %d;\n", 800+j, rand() % 4 +1);
    }
    fclose(fl);
    printf("\nThat is all!");
    return 1;
}
И пока имеется только одна проблема. Он генерирует 50 ограничений (как мне надо) по количеству строк. Единственная проблема - убрать повторяющиеся случайно генерируемые числа в строке для j и в столбце для i. Сделать это и будет просто шикарно. Но как, это уже совсем другая история...
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 12:12 12
anton_zenit, тогда всё, что я могу сейчас придумать - завести массив и забить случайными не повторяющимися значениями.
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 12:15  [ТС] 13
такс, а вот это хорошая идея. тогда стоит вопрос как задать такой массив для i и для j, и как потом этот массив плюсануть к данным элементам? Спасибо!
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 12:20 14
anton_zenit,

плюсовать, на мой взгляд, можно так:

C++
1
2
// вместо i + rand() % 99 +1,
i + massiv[count], ...
А массив можно использовать один, а складывать примерно так, как было в начале:
a[0], a[1], a[2], a[3]
a[1], a[2], a[3], a[4]
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 12:54  [ТС] 15
может, nmcf сгенерирует идею?

Добавлено через 10 минут
Есть мысль сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <cstdlib>
int randtube(void)
{
    return 1;
}
int main(int argc, char *argv[])
{
    FILE *fl;
    int n, j, i, k;
    fl = fopen("myone.lp", "w");
    n = 8;
 
    int randomDigit1[99] = {};
 
    for (int m = 0; m < 99; m++)
    {
        randomDigit1[m] = rand()%99 +1;
    }
 
    int randomDigit2[99] = {};
 
    for (int z = 0; z < 99; z++)
    {
        randomDigit2[z] = rand()%99 +1;
    }
Создал 2 одномерных массива, которые потом буду плюсовать к i и j, соответственно. Но как сделать, чтобы элементы внутри массива не повторялись?
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 12:55 16
anton_zenit, помнишь, я рассказывал про проверку ?
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 88
18.05.2015, 12:57  [ТС] 17
про проверку я понял, как сделать не понял)
0
9 / 9 / 3
Регистрация: 11.08.2013
Сообщений: 55
18.05.2015, 13:03 18
anton_zenit, генерируется случайный элемент и присваивается переменной, далее организуется проверка по всем элементам массива (или массивов), если есть совпадение - новая генерация, иначе добавление текущего значения переменной в массив.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2015, 13:03
Помогаю со студенческими работами здесь

Нужно чтобы случайные числа вставали в конец массива,а не удаляли числа
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Russian&quot;); int n;...

Случайные числа
Написать функцию, которая подсчитует сколько раз заданое число встречается в последовательности N...

Случайные числа
Доброго времени суток! Возможно ли сделать так, чтобы выпадали в случайном порядке числа 0, 2,...

Случайные числа
Всем привет! Мне нужно сгенерировать действительное случайное число в диапазоне от нуля до 1. Читал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru