$values: ();

foo {
    $num: random();
    $is-number: type-of($num) == number;
    $is-within-range: $num >= 0 and $num < 1;
    $is-random: index($values, $num) == null;
    $values: append($values, $num);

    @for $i from 1 through 1000 {
      $num: random();
      $is-number: $is-number and type-of($num) == number;
      $is-within-range: $is-within-range and $num >= 0 and $num < 1;
      $is-random: $is-random and index($values, $num) == null;
      $values: append($values, $num);
    }

    is-defined: $num != "random()";
    is-number: $is-number;
    is-within-range: $is-within-range;
    is-random: $is-random;
}

$values: ();

foo {
    $duplicates: 0;
    $num: random();
    $is-number: type-of($num) == number;
    $is-within-range: $num >= 0 and $num < 1;
    $values: append($values, $num);

    @for $i from 1 through 1000 {
      $num: random();
      $is-number: $is-number and type-of($num) == number;
      $is-within-range: $is-within-range and $num >= 0 and $num < 1;
      @if (index($values, $num) != null) { $duplicates: $duplicates + 1; }
      $values: append($values, $num);
    }

    is-defined: $num != "random()";
    is-number: $is-number;
    is-within-range: $is-within-range;
    is-random: $duplicates < 25;
}

Make random test more fault tolerant
Make random test more fault tolerant

It's valid to get one or two duplicates for multiple
calls to random. Update test to take it into account!
