初心者なので教えてください。おねがいします。

1.同時に3つの重複しない0〜9までの数字を手に入れるにはどうすればいいのですか?
randやsrandを使うと聞いたことがあるのですが、具体的な使い方がわかりません。

2.このソースをみていただけますか?

#include<stdio.h>

int list ( int per);

main()
{
int num;

printf("人は何人いますか?>");
scanf("%d",&num);

list (num);

getch();
}

void list (int per,)
{
char name[per][30];
・
      ・
      ・

これでコンパイルするとエラーになってしまいます。なぜでしょうか?配列の宣言には変数は使えないのですか?
ユーザーから入力された分だけの配列を用意するにはどのようにすればいいでしょうか?

初心者なのでばかげた質問なのかもしれませんが、どうぞよろしくおねがいします。