Arduino FastLed случайное поведение

Здесь решение, которое использует memcpy вместо назначения, поэтому вы можете использовать его для массива по произвольным данным. Вам потребуется в два раза больше памяти исходного массива, а стоимость - линейная O (n):

void main ()
{
    int elesize = sizeof (int);
    int i;
    int r;
    int src [20];
    int tgt [20];

    for (i = 0; i < 20; src [i] = i++);

    srand ( (unsigned int) time (0) );

    for (i = 20; i > 0; i --)
    {
        r = rand () % i;
        memcpy (&tgt [20 - i], &src [r], elesize);
        memcpy (&src [r], &src [i - 1], elesize);
    }
    for (i = 0; i < 20; printf ("%d ", tgt [i++] ) );
}
0
задан Marchah 27 March 2019 в 01:16
поделиться