Я написал программу на c, которая создает случайную матрицу. Он создает такую строку (3,-6,2;5,2,-9;-8,20,7). ";" вырезает каждую строку и "," каждый столбец. Теперь я написал программу на ржавчине, которая делает сложение матриц или множителей. Я называю это так:
./matrix ./test 3 3
"*" ./test 3 3
./matrix вызывает мою программу на ржавчине, и я даю ей 3 аргумента. (Матрица 1, Оператор, Матрица2) Это работает, и расчет в порядке, но Матрица 1 и 2 всегда равны. Я думаю, это потому, что я использую srand в зависимости от времени и потому, что я вызываю его одновременно, он создает два раза одно и то же. Я также протестировал Matrixrandomizer, не включая его в вызов rust, и он всегда создает другую матрицу.
Здесь вы можете увидеть мой код c.
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
int main (int argc, char* argv[]) {
// Zufallszahlengenerator initialisieren
srand(time(NULL));
if(argc < 3) {
printf("Es fehlen Argumente");
}
char matrix[100] = "";
int r, c;
r = atoi(argv[1]);
c = atoi(argv[2]);
if(r > 0 && c > 0) {
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++){
if(j == c - 1) {
int test = (1+rand()%9);
char buffer[50];
sprintf(buffer, "%d", test);
strcat(matrix, buffer);
}
if(j < c - 1){
int test = (1+rand()%9);
char buffer[50];
sprintf(buffer, "%d", test);
strcat(matrix, buffer);
strcat(matrix, ",");
}
}
if(i != r - 1) {
strcat(matrix, ";");
}
}
}
printf("%s", matrix);
}
srand()
с тем же значением приведет к тому же состоянию PRNG. Попробуйтеsrand(time(NULL) + getpid()) /* remember to #include <unistd.h> */;
, если вы работаете в системе POSIX (или, может быть,srand(time(NULL) + GetCurrentProcessId())
для Windows). - person pmg   schedule 27.10.2019./test 3 3
? Случайная квадратная матрица третьего порядка? - person Javier Silva Ortíz   schedule 27.10.2019srand(1572191000 + 34902)
, а другойsrand(1572191000 + 34927)
- person pmg   schedule 27.10.2019