Написан код, целью которого является заполнение массива в случайном порядке. Обязательно, чтобы при одинаковых значениях randvalue результат заполнения оставался неизменным. Алгоритм странный, да, но страннее еще то, что при нескольких запусках из bash результат заполнения разный. Логикой мне это не понять. Залез в дебаггер GDB, а там все происходит так, как должно быть. С каждым запуском программы командой run вывод остается неизменным. Как это можно объяснить?
код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define true 1
void main()
{
char a[79];
filling(a, 1);
}
void filling(char *rotor, int randvalue)
{
int tmp = 0;
int number = 0;
int findflag = 0;
int launchflag = 1;
int i = 0;
srand(randvalue);
while(launchflag)
{
tmp = rand()%79;
printf("%d\n", tmp);
for(i; i<79; i++)
{
if(rotor[i]==tmp)
{
findflag = 1;
break;
}
}
if(findflag==0)
{
rotor[number] = tmp;
number++;
i=0;
}
if(findflag==1)
{
i=0;
findflag = 0;
}
if(number == 78)
{
launchflag = 0;
}
}
}