The struct is a declaration of a type. You cannot mix it with the initialization. This is how it could be:

In foo.h:

    #ifndef FOO_H
    #define FOO_H

    struct Foo{
      int randInt;
    };

    extern struct Foo foo;
    struct Foo *initFoo(struct Foo *foo_ptr);
    #endif

In foo.c:

    #include "foo.h"

    struct Foo foo;
    struct Foo *initFoo(struct Foo *foo_ptr) {
      if (!foo_ptr)
        return NULL;
      foo_ptr->randInt = random(0, 101);
      return foo_ptr;
    }

random() is a function and therefore its return value cannot be used as static initializer.