воскресенье, 18 ноября 2012 г.

Последовательность случайных чисел.

Вспоминаю (точнее изучаю) способы сортировки и возможности их оптимизации, после 15 раза, жутко надоело придумывать новые последовательности чисел. В итоге пришел к такому варианту (скрипт на Bash):



#!/bin/bash

a=$1;         # читаем первый аргумент
i=0;          # устанавливаем счетчик

if((a<1))     # проверяем аргумент на равенство нулю
  then          
    a=100;        # если аргумент не был передан или передан не правильно
                  # будем печатать 1000 случайных чисел
  else            # иначе
    if((a>10))    # проверяем больше ли аргумент 10
      then
        a=$(($a/10));      # если аргумент больше 10 делим его на 10
      else
        a=1                # иначе будем выводить 10 чисел
    fi
fi

# начинаем цикл, который и выводим случайные числа в файл через запятую
while ((a>i))
  do
    echo "$RANDOM, $RANDOM, $RANDOM, $RANDOM, $RANDOM, $RANDOM, $RANDOM, $RANDOM, $RANDOM, $RANDOM, " >> $HOME/rand.out
    i=$i+1
done

echo "В файл $HOME/rand.uot было сгенерировано $(($a*10)) чисел."

exit 0

Скрипт, конечно, можно дорабатывать, но хотя бы не нужно придумывать последовательности.
Хочется отметить, что скрипт генерирует не уникальные значения, то есть значения могут повторяться... но, что бы проверить сортировку этого уже достаточно.
Так же нужно отметить очень большую медлительность скрипта. Вот пример: